【WordPress】Contact Form 7でセレクトボックスの選択肢を動的にする方法
Contact Form 7の選択肢をWordPress側で管理して動的に変えたい場合があるので備忘録としてまとめました。
実装方法
例えば、職種を動的に管理したい場合は、以下のような形にすると管理しやすいです。
Contact Form 7では以下を設定する。
[select* occupation data:GetOccupation first_as_label "選択してください"]
data属性を設定するのがポイントです。
※first_as_labelを利用することで、未選択時のテキストを変更できます。
次に、functions.php
function custom_get_select_values( $values, $options, $args ) {
if ( in_array( 'GetOccupation', $options ) ) {
// データを取得する
$values = array(); // 配列で渡す。 get_posts, get_fieldなど
}
return $values;
}
add_filter( 'wpcf7_form_tag_data_option', 'custom_get_select_values', 10, 3 );
Contact Form 7のフィルターイベントを利用して、データを追加しています。
まとめ
もっと複雑に処理をさせたい場合は、wpcf7_form_tagなどを利用して、独自のフォームタグを追加するという手もありますが、
コードの追加も少なく済むのでこのやり方はかなりオススメです!
独自のフォームタグを追加する方法は、公式サイトにあります。
今後プラグインのアップデートによってフィルターが変わる可能性があるため、動かないなどありましたらご連絡くださいませ。