WordPressの人気フォームプラグイン「Contact Form 7」では、基本的な自動返信は設定画面から簡単に行えます。しかし、送信された内容に応じて自動返信メールの内容を動的に切り替えたいというケースも多くあります。この記事では、ユーザーの入力内容に応じて自動返信メールを変更する方法を解説します。
基本設定 通常の自動返信メールの設定方法
まずはContact Form 7で自動返信メールを有効にしている必要があります。
- フォーム編集画面にアクセス
管理画面の「お問い合わせ」→ 対象フォームを編集 - 「メール(2)」タブを有効化
メール(2)が自動返信メールです。
必要に応じて送信元や件名、本文などを設定しておきます。
条件に応じてメールを切り替えるには
Contact Form 7単体では条件分岐によるメール切り替えはできません。そのため、wpcf7_before_send_mail フックを使ってPHPで処理を追加します。
実装例 選択された項目によってメール内容を切り替える
例えば、your-subject というセレクトボックスで「資料請求」または「お問い合わせ」が選ばれた場合で返信内容を分けたいとします。
フォーム側の設定例
<label> 件名:
[select your-subject "資料請求" "お問い合わせ"]
</label>
functions.php にフックを追加
add_action('wpcf7_before_send_mail', 'custom_cf7_autoresponder');
function custom_cf7_autoresponder($contact_form)
{
$submission = WPCF7_Submission::get_instance();
if (!$submission) return;
$data = $submission->get_posted_data();
$mail = $contact_form->prop('mail_2'); // 自動返信メール設定
// 条件に応じて本文を切り替え
if (isset($data['your-subject'])) {
if ($data['your-subject'] === '資料請求') {
$mail['body'] = "資料請求ありがとうございます。\n以下のリンクから資料をダウンロードしてください。\nhttps://example.com/download";
} elseif ($data['your-subject'] === 'お問い合わせ') {
$mail['body'] = "お問い合わせありがとうございます。\n担当者より改めてご連絡いたします。";
}
// 更新
$contact_form->set_properties(array('mail_2' => $mail));
}
}
注意点
- このカスタマイズは、Contact Form 7本体のアップデートに影響されにくいよう、テーマのfunctions.phpやカスタムプラグインで管理するのがおすすめです。
- mail_2が有効でない場合はこの処理は実行されません。
- セキュリティのため、POSTデータのサニタイズを追加するのが望ましいです。
まとめ
Contact Form 7では、wpcf7_before_send_mailフックを使うことで、送信内容に応じて動的に自動返信メールを変更することが可能です。入力内容に応じて案内文を変える、PDFリンクを出し分けるといった活用ができ、より柔軟なフォーム運用が実現できます。