MW WP Form 選択肢などにカスタムフィールド値を代入する

PHPワードプレスMW WP Formカスタムフィールド

フォームに「MW WP Form」を使っていて、セレクトやラジオボタンなどの選択肢にカスタムフィールドの値を使う例。

フォームを同一ページに表示するか、ページ遷移させるかで、カスタムフィールド値取得部分が少し異なるので整理。

前提

フォームの「select_colors」項目の選択肢に、「item_data_color」フィールド行の「colors」を使ってください。

というような構文です。

  • select_colors ⇒ 選択肢を使うフォームのname
  • item_data_color ⇒ 繰り返しフィールド行
  • color ⇒ フィールドのキー
  • mw-wp-form-XXX ⇒ おなじみ、フォームの識別子
フォーム
[mwform_select name="select_colors"]

ページ遷移なしの場合

function add_select_colors( $children, $atts ) {
	if( $atts['name'] == 'select_colors' ){
		if( have_rows( 'item_data_color' ) ){
			while( have_rows( 'item_data_color' ) ){
				the_row();
				$select = get_sub_field( 'color' );
				$children[$select] = $select;
			}
		}
	}
	return $children;
}
add_filter( 'mwform_choices_mw-wp-form-XXX', 'add_select_colors', 10, 2 );

カスタムフィールド値取得部分はごく普通の構文。

ページ遷移させる場合

function add_select_colors( $children, $atts ) {
	if( $atts['name'] == 'select_colors' ){
		if( have_rows( 'item_data_color', $_GET['post_id'] ) ){
			while( have_rows( 'item_data_color', $_GET['post_id'] ) ){
				the_row();
				$select = get_sub_field( 'color', $_GET['post_id'] );
				$children[$select] = $select;
			}
		}
	}
	return $children;
}
add_filter( 'mwform_choices_mw-wp-form-XXX', 'add_select_colors', 10, 2 );

遷移元の投稿データを引っ張ってきて使うので、$_GET[‘post_id’]で明示する。

※6行目の「$_GET[‘post_id’]」は無くてもOK。

MW WP Formの「URL引数を有効にする」をお忘れなく。