コンタクトフォームのメールダブルチェック

目次

Contact Form 7でメールアドレス確認欄を追加する方法

お問い合わせフォームで、メールアドレスの入力ミスを防ぐために確認欄を追加し、2つの入力が一致しているかをチェックする方法を解説します。

参考: Contact Form 7公式ドキュメント – Custom validation


実装手順

1. フォームにメールアドレス確認欄を追加

Contact Form 7のフォーム編集画面で、以下のように2つのメールアドレス入力欄を設定します。

[email* your-email]
[email* confirm-email]

2. functions.phpにバリデーションコードを追加

テーマのfunctions.phpに以下のコードを追加します。

add_filter('wpcf7_validate_email*', 'custom_email_confirmation_validation', 20, 2);

function custom_email_confirmation_validation($result, $tag) {

    if ($tag->name == 'confirm-email') {
        $your_email = isset($_POST['your-email']) ? trim($_POST['your-email']) : '';
        $confirm_email = isset($_POST['confirm-email']) ? trim($_POST['confirm-email']) : '';

        if ($your_email !== $confirm_email) {
            $result->invalidate($tag, 'メールアドレスが一致しません');
        }
    }

    return $result;
}

コードの解説

add_filter()の引数

add_filter('wpcf7_validate_email*', 'custom_email_confirmation_validation', 20, 2);
  • 第1引数: 'wpcf7_validate_email*' – 必須メールフィールドのバリデーションフック
  • 第2引数: 'custom_email_confirmation_validation' – 実行する関数名
  • 第3引数: 20 – 優先順位(Contact Form 7公式推奨値)
  • 第4引数: 2 – 関数に渡される引数の数

関数の引数

function custom_email_confirmation_validation($result, $tag)

Contact Form 7から自動的に2つの引数が渡されます。

  • $result: WPCF7_Validationクラスのインスタンス(バリデーション結果を管理)
  • $tag: WPCF7_FormTagクラスのインスタンス(フォームフィールドの情報)

invalidate()メソッド

$result->invalidate($tag, 'メールアドレスが一致しません');
  • 第1引数: エラー対象のフィールド情報($tag)
  • 第2引数: 表示するエラーメッセージ

動作の流れ

  1. ユーザーがフォームに入力して送信ボタンをクリック
  2. Contact Form 7がバリデーションフックを実行
  3. カスタムバリデーション関数がconfirm-emailフィールドをチェック
  4. 2つのメールアドレスを比較
  5. 一致しない場合はエラーメッセージを表示し、送信を中止
  6. 一致する場合は送信を続行

注意事項

  • フィールド名を変更する場合は、PHPコード内の'your-email''confirm-email'も合わせて変更してください
  • functions.phpを編集する前に、必ずバックアップを取ってください
  • エラーメッセージは自由に変更できます

参考: Contact Form 7公式ドキュメント – Custom validation

この記事が気に入ったら
フォローしてね!

目次