こんにちは、プログラマーの山本です。

今回は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(税別)から承っております。

相場よりも費用を抑えて対応させていただくことが可能ですので、
以下のフォームから相談内容を記入して気軽にご連絡ください。

    必須 お名前

    必須 メールアドレス

    任意 サイトのURL

    必須 ご依頼内容や相談内容

    ※出来るだけ具体的に記載していただけると進行がスムーズになります。

    任意 画像やPDF

    ※必要があれば添付してください。





    原則2営業日以内に、ご返信させていただきます。