WordPress – Contact Form 7にメールアドレス確認欄を追加

WordPress
この記事は約4分で読めます。
スポンサーリンク

WordPressのプラグイン「Contact Form 7」にはメールアドレスの再入力チェックする項目がデフォルトで用意されていません。
しかし、問い合わせフォームなどの制作のほとんどの場合、メールアドレスを再入力で確認する項目を求められますし、実際、メールアドレスの入力間違いはその後の返信などの展開に影響を及ぼす最重要項目ですので、リスクを考えるとメールアドレスの再入力チェックは必須だと考えられます。

「Contact Form 7」でメールアドレス確認項目が使えるようにするには、テーマの functions.php に関数を追加してフィルターフックし、それによって出来るタグを「Contact Form 7」のフォームやメールのテンプレート編集で用います。

スポンサーリンク

functions.phpにコードを追加

「Contact Form 7」でメールアドレス確認項目が使えるようにするには、まず、テーマ(子テーマが好ましい)の functions.php に下記関数を追加します。
これにより、フォーム(メール)タグのname属性の末尾に _confirm を付加したものが確認用(再入力)となります。通常のメールアドレス欄との不一致があれば、送信時の入力チェックで「確認用のメールアドレスが一致していません」と表示され、送信を止めます。

PHP
<?php
add_filter( 'wpcf7_validate_email', 'wpcf7_text_validation_filter_extend', 11, 2 );
add_filter( 'wpcf7_validate_email*', 'wpcf7_text_validation_filter_extend', 11, 2 );
function wpcf7_text_validation_filter_extend( $result, $tag ) {
    $type = $tag['type'];
    $name = $tag['name'];
    $_POST[$name] = trim( strtr( (string) $_POST[$name], "\n", " " ) );
    if ( 'email' == $type || 'email*' == $type ) {
        if (preg_match('/(.*)_confirm$/', $name, $matches)){
            $target_name = $matches[1];
            if ($_POST[$name] != $_POST[$target_name]) {
                if (method_exists($result, 'invalidate')) {
                    $result->invalidate( $tag,"確認用のメールアドレスが一致していません");
                } else {
                    $result['valid'] = false;
                    $result['reason'][$name] = '確認用のメールアドレスが一致していません';
                }
            }
        }
    }
    return $result;
}
?>

Contact Form 7 のフォーム(メール)タグとして使用する

上記 functions.php の編集で、「Contact Form 7」のフォーム(メール)テンプレートでメールアドレス再入力用のタグが使えるようになります。
例えば、通常のメールアドレス入力欄のname属性が your-email の場合は、確認用(再入力)欄のname属性は your-email_confirm となります。

[email* your-email placeholder "必須項目です"]
[email* your-email_confirm placeholder "確認用に再度ご入力ください"]

以上、ご参考になれば幸いです。

コメント

タイトルとURLをコピーしました