サポート » 開発版 » カスタムフィールドテンプレートの項目をMW WP Formに反映させたいのですが

  • 初めまして。
    質問させて頂きます。

    見学会情報を投稿記事としてカスタムフィールドテンプレートを使って、開催日や、開催日時、開催場所を表示させるように作りました。

    カスタムフィールドテンプレートの見学会予約フォーム用という項目に記載する日時をお問い合わせフォームにも選択ボックスとして表示させようとして一つの項目は表示させることに成功したのですが、もう一つの項目が表示できません。

    Mw Wp Formの作者さまのブログ記事を参考にしてMw Wp Formとfanction.phpに以下のコードを書いています。

    Mw Wp Form
        <dt>ご希望の来場日</dt>
    <dd>[mwform_select name=”schedules”]</dd>

    fanction.php
    function add_schedules( $children, $atts ) {
    if ( $atts[‘name’] == ‘schedules’ ) {
    $schedules = get_posts( array(
    ‘post_type’ => ‘見学会・セミナー情報’,
    ‘tag’ => ‘見学会予約対象’,
    ‘posts_per_page’ => -1
    ) );
    foreach ( $schedules as $schedule ) {
    $children[$schedule->見学会予約フォーム用] = $schedule->見学会予約フォーム用;
    }
    }
    return $children;
    }

    これで一つの項目は出力されるのですが、もう一項目が出力されないので困っています。このコードのどこを変更すればカスタムフィールドの開催日の項目が選択ボックスの中に全部表示できるようになるかお知恵を貸していただきたいです。
    宜しくお願いします。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • まずfanction.phpはfunctions.phpにしてください。

    それとadd_filterが抜けてませんか?
    参照元の記事(おそらくhttp://2inc.org/blog/2013/10/13/3743/)だと以下のものです。

    // フック名のxxxの部分はフォーム作成画面を参照してください。
    add_filter( 'mwform_choices_mw-wp-form-xxx', 'add_products', 10, 2 );

    ご返信ありがとうございます。

    >>まずfanction.phpはfunctions.phpにしてください。
    functions.phpにファイル名はなっております。私の誤字でございます。すみません。

    >>// フック名のxxxの部分はフォーム作成画面を参照してください。
    add_filter( ‘mwform_choices_mw-wp-form-xxx’, ‘add_products’, 10, 2 );
    抜けが多く申し訳ありません。こちらの記述も記載しています。
    以下の通りです。

    add_filter( ‘mwform_choices_mw-wp-form-4326’, ‘add_schedules’, 10, 2 );
     function add_schedules( $children, $atts ) {
      if ( $atts[‘name’] == ‘schedules’ ) {
    $schedules = get_posts( array(
    ‘post_type’ => ‘見学会・セミナー情報’,
    ‘tag’ => ‘見学会予約対象’,
    ‘posts_per_page’ => -1
    ) );
      foreach ( $schedules as $schedule ) {
    $children[$schedule->見学会予約フォーム用] = $schedule->見学会予約フォーム用;
    }
    }
    return $children;
    }

    と記述しています。

    >>参照元の記事(おそらくhttp://2inc.org/blog/2013/10/13/3743/)
    まさにこの記事を参考にさせていただいています。
    ですが此処からうまく動かすことができず、立ち往生しています。

    では、$schedulesの中身は期待通りのものが入っていますでしょうか?
    var_dump( $schedules );
    post_typeとかtagのスラッグは日本語で間違いないです?

    $schedule->見学会予約フォーム用はたぶん違うような気がします。
    上のvar_dumpした中身で確認できると思います。

    確認させていただきたいのですが、
    「見学会・セミナー情報」投稿タイプで、
    「見学会予約対象」タグが付けられた全投稿の、
    「見学会予約フォーム用」というカスタムフィールドの値(値は一つ?)をセレクトボックスの選択肢にする、
    ということですよね?

    ご返信ありがとうございます。
    var_dump( $schedules );こちらを試してみます。
    functions.phpに書けば良いのでしょうか?

    >>確認させていただきたいのですが、
    「見学会・セミナー情報」投稿タイプで、
    「見学会予約対象」タグが付けられた全投稿の、
    「見学会予約フォーム用」というカスタムフィールドの値(値は一つ?)をセレクトボックスの選択肢にする、
    ということですよね?

    その通りです。
    「見学会予約フォーム用」というカスタムフィールドは二つに分けて作っています。

    カスタムフィールドタイプの
    テンプレートコンテンツには以下のように記述しています。

    ====================
    [見学会予約フォーム用]
    type = text
    size = 35
    label = 開催日を入力してください

    [見学会予約フォーム用]
    type = text
    size = 35
    hideKey = true
    =================

    見学会予約フォーム用という名でテキストフォームが二つ出ています。

    はい。functions.phpでvar_dumpforeachの前で良いと思います。

    「見学会予約フォーム用」というカスタムフィールドが複数あるのですね。
    それだと$schedule->見学会予約フォームで正しく値が取得できているのであれば、中には配列で二つのフィールドの値が入っているのではないでしょうか。

    var_dump( $schedules );を試してみました。
    ありがとうございます。

    なにやら長々と結果が出てまいりました。

    長くなりますが以下にペーストいたします。

    array(1) {
    [0]=>
    object(WP_Post)#3188 (24) {
    [“ID”]=>
    int(4119)
    [“post_author”]=>
    string(1) “1”
    [“post_date”]=>
    string(19) “2016-07-04 11:54:47”
    [“post_date_gmt”]=>
    string(19) “2016-07-04 02:54:47”
    [“post_content”]=>
    string(180) ”
    <p>今回のみどころは、 ①こだわりの耐震構造や気密性の高い吹付断熱 ②メンテナンスコスト優れた目地の無い新仕様サイディング</p>

    [“post_title”]=>
    string(80) “7月9日(土)・10日(日)に日野市神明で構造見学会を行います。”
    [“post_excerpt”]=>
    string(0) “”
    [“post_status”]=>
    string(7) “publish”
    [“comment_status”]=>
    string(6) “closed”
    [“ping_status”]=>
    string(6) “closed”
    [“post_password”]=>
    string(0) “”
    [“post_name”]=>
    string(193) “7%e6%9c%889%e6%97%a5%e5%9c%9f%e3%83%bb10%e6%97%a5%e6%97%a5%e3%81%ab%e6%97%a5%e9%87%8e%e5%b8%82%e7%a5%9e%e6%98%8e%e3%81%a7%e6%a7%8b%e9%80%a0%e8%a6%8b%e5%ad%a6%e4%bc%9a%e3%82%92%e8%a1%8c%e3%81%84”
    [“to_ping”]=>
    string(0) “”
    [“pinged”]=>
    string(0) “”
    [“post_modified”]=>
    string(19) “2016-08-03 11:08:36”
    [“post_modified_gmt”]=>
    string(19) “2016-08-03 02:08:36”
    [“post_content_filtered”]=>
    string(0) “”
    [“post_parent”]=>
    int(0)
    [“guid”]=>
    string(32) “http://www.kobaken.co.jp/?p=4119”
    [“menu_order”]=>
    int(0)
    [“post_type”]=>
    string(4) “post”
    [“post_mime_type”]=>
    string(0) “”
    [“comment_count”]=>
    string(1) “0”
    [“filter”]=>
    string(3) “raw”
    }
    }

    どうも配列が1しかないようで、狙った値を取得できていないようです。

    やはりpost_typeとtagのスラッグを確認いただいた方が良いと思います。
    通常は半角英数かと思います。

    $schedules = get_posts( array(
    ‘post_type’ => ‘見学会・セミナー情報’,
    ‘tag’ => ‘見学会予約対象’,
    ‘posts_per_page’ => -1
    ) );

    あと今コピペして気づいたのですが、シングルクォートがおかしいです。'post_type'みたいになるはずです。
    この記号はなんというのでしょう?これはこれで問題ないのでしょうか??

    >>やはりpost_typeとtagのスラッグを確認いただいた方が良いと思います。
    通常は半角英数かと思います。

    ありがとうございます。
    tagのスラッグをアルファベットに変更してみます。
    それと、「見学会予約フォーム用」というカスタムフィールドの名前も変更してみます。

    シングルクォートは見直して打ち直してみましたが、問題なさそうでした。

    post_typeとtagのスラッグをアルファベットに変更しました。
    今まで反映されていた一つ目の項目まで反映されなくなってしまい、
    元に戻しました。

    'tag' => '見学会予約対象'
    はあっているようなんですが・・

    もう一つ、今回このトピックを立ち上げましたが
    フォーラムを「開発」にしてしまっているので、一度このトピックを閉じて、「テーマ」のフォーラムで
    もう一度トピックを立ち上げようと思います。

    ikaringさんにはいろいろご一緒に考えていただき
    本当にありがとうございます。
    よろしければ「テーマ」で立ち上げる新トピックにも投稿していただけますと嬉しいです。

    ありがとうございました

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「カスタムフィールドテンプレートの項目をMW WP Formに反映させたいのですが」には新たに返信することはできません。