2014.07.03

Contact Form 7 でメールアドレスと確認用メールアドレスの整合性チェックを行う【WordPress】

こんにちは(o’∀’)ノ7月ですね。もう一年の半分終わったのか!?と驚いています。

最近は時間の感覚がおかしくて、「あれ?もう木曜?明日行けば仕事お休み?」って思うことが非常に多くなりまして。

大丈夫だろうか?と自分で自分がちょっと不安です((((;゚Д゚))))ガクガクブルブル

 

私は、特別な理由がない限りお問い合わせフォームはContact Form 7 を使用しています。

このContact Form 7は超便利ではあるのですが、お問い合わせフォームによくみかける”確認用メールアドレスの整合性チェック機能”が標準機能にはないのでどうにかならんか!と。

そこで、今回必要な案件があったので、実装してみました。

 

Contact form 7 で確認用メールアドレス入力欄を実装する

functions.phpに以下のコードを追加

<?php
// Contact Form 7 に確認用メールアドレス入力欄を実装する
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]) {
                $result['valid'] = false;
                $result['reason'][$name] = '確認用のメールアドレスが一致していません';
            }
        }
    }
    return $result;
}
?>

Contact form 7 設定画面では以下のようにショートコードを設定。
確認用のメールアドレスの名前には、メールアドレスと同じ名前を使用して後ろに「_confirm」を追記します。

例:メールアドレスの名前がyour-emailだった場合

メールアドレス:
[email* your-email]

メールアドレス (確認用):
[email* your-email_confirm]

これだけ!めっちゃ簡単!
参考サイト様、ありがとうございます(-人-)アリガタヤ