こんにちは、プログラマーの山本です。
今回はContactForm7の初期値の動的な設定について解説します。
毎回同じ値を初期値にするのであれば、
ContactForm7のデフォルトの設定で行なえますが、
URLごと(リンクごと)に初期値を変えたい場合には、
今回紹介するシステムを実装する必要があります。
フィルターフックで初期値を自動的に設定する
以下のコードを function.php に追加します。
function custom_tag_filter($tag){
if ( ! is_array( $tag ) ){
return $tag;
}
$name = $tag['name'];
//テキストボックスの場合
if(isset($_GET['email'])){
if($name == 'your-email'){
$tag['values'][] = $_GET['email'];
}
}
//テキストエリアの場合
if(isset($_GET['message'])){
if($name == 'your-message'){
$tag['values'][] = preg_replace("/\^/", "\n", $_GET['message']);
}
}
//ラジオボタンの場合
if(isset($_GET['radio'])){
if($name == 'your-radio'){
$tag['options'][] = "default:" . $_GET['radio'];
}
}
//チェックボックスの場合
if(isset($_GET['check'])){
if($name == 'your-check'){
$tag['options'][] = 'default:' . $_GET['check'];
}
}
return $tag;
}
add_filter('wpcf7_form_tag', 'custom_tag_filter', 11);
テキストボックス、テキストエリア、ラジオボタン、チェックボックスに対応しています。
テキストボックス、テキストエリアの場合は values に、パラメータを設定して、
ラジオボタン、チェックボックスの場合は options に、”default:”をつけたパラメータを設定します。
15行目の preg_replace は、テキストエリアで改行に対応するために行っています。
8、14、20、26行目の your-◯◯ は、
適応したいコンタクトフォームの 名前を指定してください。
URLでパラメータを渡す
コンタクトフォームがあるページへのリンクの末尾に、
?email=◯&message=◯&radio=◯&check=◯
を追加することで、初期値を自由に設定することが出来ます。
例えば、以下のURLにアクセスすれば、
フォームのURL?email=test@gmail.com&message=これはテストです。&radio=1&check=2
以下の画像のように初期値が設定されます。
また、以下のURLにアクセスすれば、
フォームのURL?email=aiueo@gmail.com&message=テスト^テストテスト^テストテストテスト&radio=2&check=1_3_4
以下の画像のように初期値が設定されます。
checkboxの初期値を設定するには、数値をアンダーバー(_)で区切るという点がポイントになります。
まとめ
今回は Contact Form 7 の初期値をURLによって変更する方法を紹介しました。
初期値を適切に設定してあげれば、
お客さんの手間を減らしてあげられるので、必要に応じて活用してみてください。
制作の依頼はこちら
もし、ご自分で実装するのが難しい場合や、
ContactForm7 周りのカスタマイズをご希望の場合は、
以下のフォームから弊社にご相談くださいませ。
また、今回のシステム以外にも、
Welcartにおけるシステムの追加やカスタマイズ、
Wordpressのテーマやプラグインのカスタマイズなど、
ウェブに関するご依頼ならほとんど対応可能です。
簡単なシステムなら1件¥3,000(税別)から承っております。
相場よりも費用を抑えて対応させていただくことが可能ですので、
以下のフォームから相談内容を記入して気軽にご連絡ください。