【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などを利用して、独自のフォームタグを追加するという手もありますが、
コードの追加も少なく済むのでこのやり方はかなりオススメです!

独自のフォームタグを追加する方法は、公式サイトにあります。

独自のフォームタグを追加する

今後プラグインのアップデートによってフィルターが変わる可能性があるため、動かないなどありましたらご連絡くださいませ。

About Me

プロフィール画像

ユーキと申します。北海道恵庭市という札幌と新千歳空港の間でフリーランスのWebエンジニアとして活動してます。

当サイトのブログでは、主にWeb制作全般、フリーランス周りの情報など色々なノウハウや知識を載せています。
その他日々気になったこと、思ったことも書いてます。

お仕事の相談など何かありましたら、お問い合わせかツイッターのDMからお気軽にご連絡くださいませ。

お問い合わせはこちら

ツイッターはこちら

ポートフォリオはこちら

Latest Posts

Popular Posts

TOP