【 WordPress Contact Form 7 】メールアドレスの間違い、入力ミスを防ぐ方法【コピペOK】

  • URLをコピーしました!

こんにちはrey( @reydesign8376) です
都内の勤務生活を辞めてWebデザイナーに。今は趣味のサーフィンなどしながら海沿いでのんびり暮らしています。

お問い合わせフォームで地味に多いのが、メールアドレスの入力ミス

  • 確認用のメールアドレスが一致していない
  • 余計なスペースが入っている(コピペで混入しがち)
  • 全角が混ざっている(@や英字が全角になってる)

これがあると、せっかくのお問い合わせに返信できない…という事故になります。

今回は Contact Form 7

  • メールアドレス一致チェック
  • 余白混入をエラー
  • 全角文字が入っていたらエラー

までをまとめて対応するフォーム設定を紹介。コピペOK。

こちらも便利な設定です👇
【電話番号をハイフン有無&正しく入力チェックする方法】

目次

Contact Form 7 側のフォーム設定

まずはメールフィールド2つ作成します。

<div class="block">
    <div class="item detail">メールアドレス</div>
    <div class="item value">
        [email* your-email]
    </div>
</div>

<div class="block">
    <div class="item detail">メールアドレス(確認)</div>
    <div class="item value">
        [email* your-email-confirm]
    </div>
</div>

タグは、your-email your-email-confirm を使います。

unctions.php に追加するコード

テーマの functions.php に以下を追加します。完全コピペOK

function wpcf7_validate_email_confirm_strict($result, $tag) {
    $tag = new WPCF7_FormTag($tag);
    $name = $tag->name;

    $email = isset($_POST['your-email']) ? wp_unslash($_POST['your-email']) : '';
    $email_confirm = isset($_POST['your-email-confirm']) ? wp_unslash($_POST['your-email-confirm']) : '';

    if ($name === 'your-email' || $name === 'your-email-confirm') {

        // 前後スペースチェック
        if ($email !== trim($email) || $email_confirm !== trim($email_confirm)) {
            $result->invalidate($tag, "メールアドレスの前後にスペースがあります。削除してください。");
            return $result;
        }

        // 全角チェック
        if (preg_match('/[^\x21-\x7E]/', $email) || preg_match('/[^\x21-\x7E]/', $email_confirm)) {
            $result->invalidate($tag, "メールアドレスは半角で入力してください。");
            return $result;
        }

        // 途中スペース禁止
        if (preg_match('/\s/', $email) || preg_match('/\s/', $email_confirm)) {
            $result->invalidate($tag, "メールアドレスにスペースは使用できません。");
            return $result;
        }
    }

    if ($name === 'your-email-confirm') {
        if ($email !== $email_confirm) {
            $result->invalidate($tag, "メールアドレスが一致しません。");
        }
    }

    return $result;
}

add_filter('wpcf7_validate_email',  'wpcf7_validate_email_confirm_strict', 11, 2);
add_filter('wpcf7_validate_email*', 'wpcf7_validate_email_confirm_strict', 11, 2);

メールアドレスの一致のみ

シンプルにメールアドレスの一致だけならこれだけでもOKです

// Contact Form 7 メールアドレス一致チェック
function wpcf7_validate_email_confirm($result, $tag) {
    $tag = new WPCF7_FormTag($tag);
    $name = $tag->name;

    $email = isset($_POST['your-email']) ? trim(wp_unslash($_POST['your-email'])) : '';
    $email_confirm = isset($_POST['your-email-confirm']) ? trim(wp_unslash($_POST['your-email-confirm'])) : '';

    if ($name === 'your-email-confirm') {
        if ($email !== $email_confirm) {
            $result->invalidate($tag, "メールアドレスが一致しません。");
        }
    }

    return $result;
}

add_filter('wpcf7_validate_email',  'wpcf7_validate_email_confirm', 11, 2);
add_filter('wpcf7_validate_email*', 'wpcf7_validate_email_confirm', 11, 2);

コードの詳細

① 前後スペースチェック

前後の余計なスペースはエラー

if ($email !== trim($email)) {
    $result->invalidate($tag, "メールアドレスの前後にスペースがあります。削除してください。");
}

② 途中スペースチェック

途中の余計なスペースはエラー

if (preg_match('/\s/', $email)) {
    $result->invalidate($tag, "メールアドレスにスペースは使用できません。");
}

③ 全角チェック

全角文字が混ざっていたらエラーにします

preg_match('/[^\x21-\x7E]/', $email)

まとめ

これだけでお問い合わせフォームの精度がぐっと上がります!

地味ですが、実務ではかなり大事な部分。

ぜひ試してみてください。

基本のフォームの設定の仕方はこちら👇

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

share me!
  • URLをコピーしました!

この記事を書いた人

Webデザインとコーディングを中心に、html、CSSなどの現場で役立つWeb制作テクニックを発信してます。
デザインのトレンドを実務で即使えるテクニックや装飾アイデアでわかりやすいコード付きで解説しています。

目次