WEB MEMO LOG

【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 で、選択項目としてカスタム投稿やカスタムタクソノミーを表示する方法|モンキーレンチ

関連記事