フォームに「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引数を有効にする」をお忘れなく。