ContactForm7を使って、カスタムフィールドに登録したアドレスにメール送信する方法

例えば、100件のお店を紹介したブログサイトを作ったとします。
各お店へ問い合わせが出来るようにフォームを作ろうと思ったら、どうしますか?
項目は同じですが、送信先が違うので、100件分フォームを作らなければなりません。
それは、ちょっと面倒ですよね。

遷移元の値をPOSTでContactForm7に渡して、カスタムフィールドに登録したアドレスに送信する方法を紹介します。

POSTを使用して値を渡す

GETを使えば、簡単に値を渡すことが出来ますが、値の内容がURLに表示されてしまいます。
メールアドレスはさすがに表示したくないので、POSTで渡すことにします。

フォームページへ値を渡すためのフォームを記述します。
カスタムフィールド「shop_name」「shop_email」に「店名」「メールアドレス」を登録するものとします。

<form method="post" action="<?php echo esc_url(home_url('order'));?>">
	<input type="hidden" name="shop_name" value="<?php echo get_post_meta($post->ID, 'shop_name', true);;?>">
	<input type="hidden" name="shop_email" value="<?php echo get_post_meta($post->ID, 'shop_email', true);?>">
	<input type="submit" value="お問い合わせ">
</form>


POSTの値を受け取る

遷移元から渡されたPOSTの値を受け取って、ContactForm7で使えるようにします。
そのために、functions.phpにコードを追記します。

■functions.php
function my_form_tag_filter($tag){
	if ( ! is_array( $tag ) ){
		return $tag;
	}
	if(isset($_POST['shop_name'])){
		$name = $tag['name'];
		if($name == 'shop_name'){
			$tag['values'] = (array) $_POST['shop_name'];
		}
	}
	if(isset($_POST['shop_email'])){
		$name = $tag['name'];
		if($name == 'shop_email'){
			$tag['values'] = (array) $_POST['shop_email'];
		}
	}
	return $tag;
  }
  add_filter('wpcf7_form_tag', 'my_form_tag_filter', 11);

上記のようにコードを追記することで、POSTで渡す値がContactForm7のオリジナルのタグとして使用できるようになります。

ContctForm7で値を使用する

実際にオリジナルのタグをContacForm7で使ってみましょう。

フォームテンプレートの作成

「フォーム」タブでフォームのテンプレートにオリジナルのタグを追記します。

<label> 店名
    [text shop_name readonly] </label>
<label> 氏名
    [text* your-name autocomplete:name] </label>
<label> メールアドレス
    [email* your-email autocomplete:email] </label>
<label> 題名
    [text* your-subject] </label>
<label> メッセージ本文 (任意)
    [textarea your-message] </label>
[hidden shop_email]
[submit "送信"]

これで「店名」はテキストフィールドに、メールアドレスは非表示フィールドに格納されました。

[text shop_name readonly] 

上記のように「readonly」を付け加えることで、編集できないテキストフィールドにすることが出来ます。
間違って消されてしまわないように、念のため「readonly」を付けました。

メールテンプレートの作成

次に「メール」タブでメールのテンプレートを作成します。

送信先に[shop_email]と記述します。これで、カスタムフィールドのアドレスにメール送信できるようになります。
「,」カンマで区切れば複数のアドレスに送ることができますので、お店と自分の2か所に送るようにしました。

■送信先:
[shop_email],[_site_admin_email]

メッセージ本文は必要に応じて作成してください。

■メッセージ本文:
店名:[shop_name]
お名前:[your-name]
メールアドレス:[your-email]
メッセージ本文:[your-message]

まとめ

ContactForm7を使って、カスタムフィールドに登録したアドレスに送信する方法を紹介しました。
遷移元の値をPOSTでContactForm7に渡してあげれば、フォーム一つ、テンプレートも一つで済むようになります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です