
MW WP Formのセレクトボックスにカスタムフィールドの値を代入する
WEB
お問い合わせフォームの項目にカスタムフィールドの値を代入したかった
お問い合わせフォームのセレクトボックスにお客様が追加できる様にする仕様だが、ITリテラシーの低いお客様でフォームの改変は全くできないとのことなので、カスタムフィールドの値を取得して自動的に入る様に設定した。
1.お問い合わせフォームにセレクトボックスを設置
これは通常のMW WP Formの設置と同じ手法で追加
nameに今回はmakersという値を使いました。
2.カスタムフィールドの繰り返しフィールドを使い、メーカー名を追加できる様にした。
固定ページのお問い合わせページに繰り返しフィールドを使用して、メーカー入力欄を作成
3.functions.phpにコードを追加して完成
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//メールフォームのセレクトボックスにメーカー名を入れる // フック名のxxxの部分はフォーム作成画面を参照してください。 add_filter( 'mwform_choices_mw-wp-form-349', 'add_makers', 10, 2 ); function add_makers( $children, $atts ) { if ( $atts['name'] == 'makers' ) {// name属性が「makers」の場合に実行する $audios = get_field('audio');//繰り返しフィールドの配列を変数に代入 foreach ($audios as $audio) { $maker = $audio['maker']; $children[$maker] = $maker; } } return $children; } |
今回のコードでは、下記の内容で作成しました。
- セレクトボックスのname属性がmakers
- ACFの繰り返しフィールド名がaudio(これはテキストを入力するフィールド名です。)
- functions.phpで実行
今回は一項目でしたが、これと同じ方法で複数のセレクトボックスに値を代入することも可能です。
今後は改変して、セレクトボックスを親子構造として扱って、一つ目のセレクトボックスで選んだ値で二つ目のセレクトボックスの選択肢を切り替えれる様にしたいなと思っています。