Web制作で役立つメモをWEB MEMO LOG

2017.10.22

【WordPress】Smart Custom Fieldsで作成したカスタムフィールドをMW WP Formの選択項目に使用する方法

普段よくお世話になっているWordPressプラグイン、繰り返しのカスタムフィールドを作成できる「Smart Custom Fields」、柔軟なカスタマイズが可能なフォームを簡単に作成できる「MW WP Form」。
クライアント側でフォームの選択項目を編集したいという要望があり、「Smart Custom Fields」で作成したカスタムフィールドの値を「MW WP Form」の選択項目で使用する方法をメモメモ。

【1】カスタム投稿タイプ(select_post)を作成

【2】「Smart Custom Fields」で繰り返し値を設定できるカスタムフィールド([グループ] group_form_item / [項目] form_item)を作成

【3】「MW WP Form」でフォームを作成、更新する選択項目を設定

// フォーム作成画面で記述
<dt>選択項目</dt>
<dd>[mwform_select name="select_list"]</dd>

【4】「function.php」に下記を設定

function add_select_list( $children, $atts ) {
    // name属性が「select_list」の場合にカスタマイズ
    if ( $atts['name'] == 'select_list' ) {
        $args = array(
            'post_type' => 'select_post',
            'page_id' => XXXXXX,//特定の記事のみのカスタムフィールドを使用する場合は設定
            'posts_per_page' => -1,
            'post_status' => 'publish'
        );
        $the_query = new WP_Query( $args );
        if ( $the_query->have_posts() ) :
        while ( $the_query->have_posts() ) : $the_query->the_post();
         
        $get_group = SCF::get( 'group_form_item' );
            foreach ( $get_group as $fields ) {
                $children[$fields['form_item']] = esc_html( $fields['form_item'] );
            }
        endwhile;
        endif;
    }
return $children;
}
add_filter( 'mwform_choices_mw-wp-form-XXXXXXX', 'add_select_list', 10, 2 );//フォーム識別子のkeyを入力

【参考】MW WP Form で、選択項目としてカスタム投稿やカスタムタクソノミーを表示する方法|モンキーレンチ

About Site

同じことを何度も検索していたりするんで、検索して解決したことを残そうと思いまして。