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を入力