WordPressカスタマイズ事例

GET値を contact form 7 に渡してチェックボックス項目を選択状態にする

以前の事例で
GET値をContact Form 7に渡してフォームに埋め込む
GET値を contact form 7 に渡してプルダウン項目を選択状態(selected)にする
を掲載しました。
続きまして、今回はチェックボックスを制御してみます。

Contact Form 7はチェックボックスのデフォルトチェックをこのように表現します。

default:1_2_3

これで、チェックボックスの最初から1つ目、2つ目、3つ目をチェック状態にすることを表します。
これが分かればあとは簡単です。

テーマのfunctions.phpに次のように記述します。

function kaiza_form_check_filter($tag) {
    $formName = 'checkbox_name'; //contact form 7で設定するチェックボックス名
    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'][] = 'default:' . $index;
                }
            }
        }
    }
    return $tag;
}
add_filter( 'wpcf7_form_tag', 'kaiza_form_check_filter', 11, 2);

これで準備完了です。
 
あとは、問い合わせページへのリンクをこのように記述すれば、チェックボックスcheckbox_nameの1番目、3番目、5番目にチェックが入った状態の問い合わせフォームになります。

<a href="/contact/?checkbox_name=1_3_5">担当施設に問い合わせる</a>

 
 
※ 一緒に読んだ方が良い記事はこちら
Contact Form 7 で問い合わせメール送信後に、カスタムフィールドの値を更新する


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