【WordPress】Contact Form 7で特定の条件で自動返信メールを変更する方法

【WordPress】Contact Form 7で特定の条件で自動返信メールを変更する方法 WordPress

WordPressの人気フォームプラグイン「Contact Form 7」では、基本的な自動返信は設定画面から簡単に行えます。しかし、送信された内容に応じて自動返信メールの内容を動的に切り替えたいというケースも多くあります。この記事では、ユーザーの入力内容に応じて自動返信メールを変更する方法を解説します。

基本設定 通常の自動返信メールの設定方法

まずはContact Form 7で自動返信メールを有効にしている必要があります。

  1. フォーム編集画面にアクセス
    管理画面の「お問い合わせ」→ 対象フォームを編集
  2. 「メール(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リンクを出し分けるといった活用ができ、より柔軟なフォーム運用が実現できます。