WordPressカスタマイズ事例

GET値を contact form 7 に渡してプルダウン項目を選択状態(selected)にする

以前の事例で
GET値をContact Form 7に渡してフォームに埋め込む
を掲載しました。
この事例では、投稿IDをGET値に乗せてフォームに渡し、その投稿IDが属するターム(カテゴリ)情報をフォームに埋め込む、ということでした。
 
さて、今回も同じようなcontact form 7フォームへのGET値渡しですが、
今回はフォームのプルダウン選択項目を引数によって選択状態(selected)にする方法のご紹介です。
 
contact form 7 画面で次のようなプルダウンを登録した場合を例にしてみます。
[select pullli include_blank “新卒エントリー” “中途採用エントリー” “その他”]

プルダウン項目を直接GETに流すとURLに日本語が出てしまってアレなので、
プルダウンの順番(数字)をGETで送って、その順番のプルダウン項目を選択状態にしてみます。
function.phpに下記を追記します。

function kaiza_form_select_filter($tag) {
    $formName = 'pullli'; //プルダウン名
    if ( ! is_array( $tag ) )
        return $tag;
    if( isset($_GET[$formName]) ) {
        $name = $tag['name'];
        if( $name === $formName ) {
            if( is_array( $tag['values'] ) ) {
                $index = $_GET[$formName];
                if( $index !== false ) {
                    $tag['options'][$key] = 'default:' . $index; //デフォルト値設定
                }
            }
        }
    }
    return $tag;
}
add_filter( 'wpcf7_form_tag', 'kaiza_form_select_filter', 11, 2);

そして、リンク元を次のようにすれば、フォーム画面で「新卒エントリー」が選択された状態(selected)になります。

<a href="entry/?pullli=1">新卒エントリーはコチラ &rarr;</a>

関連するWordPressカスタマイズ事例