Contact Form 7でメールアドレスの再入力チェック機能を実装してみた

Contact Form 7でメールアドレスの再入力チェック機能を実装する方法
WordPressプラグインContact Form 7でメールアドレスを再入力して貰いメールアドレスに間違いがないか確認する機能を実装するカスタマイズ方法です。最新版にて動作確認済みコードとその解説を掲載しています。

 

いままで、メールアドレスの再チェックなど考えたこともなかったが、仕事でホームページを受け、メールアドレスの再チェック機能をつけてほしいとのこと。

さて、どうしたものか?

実際俺もメールアドレスを手動で入力した場合入力ミスをする。当然のことではあるがその場合先方からの返信はない。そう考えるとやはりメールアドレスの再チェック機能はあったほうがいいだろう。デフォルトであってもいい機能かもしれない。

やり方

メールアドレスの再入力チェック機能の実装手順としては3ステップ。

  1. functions.phpにコード貼り付け
  2. Contact Form 7でフォームを作成
  3. 動作確認

1,2は作業順は前後しても構いません。
1の作業は1度行えば、別のフォームを作る際には不要です。

functions.phpにコード貼り付けます

まずは現在利用中テーマのfunctions.phpに以下のコードを貼り付けます。

add_filter( 'wpcf7_validate_email', 'wpcf7_validate_email_filter_confrim', 11, 2 );
add_filter( 'wpcf7_validate_email*', 'wpcf7_validate_email_filter_confrim', 11, 2 );
function wpcf7_validate_email_filter_confrim( $result, $tag ) {
    $type = $tag['type'];
    $name = $tag['name'];
    if ( 'email' == $type || 'email*' == $type ) {
        if (preg_match('/(.*)_confirm$/', $name, $matches)){ //確認用メルアド入力フォーム名を ○○○_confirm としています。
            $target_name = $matches[1];
                $posted_value = trim( (string) $_POST[$name] ); //前後空白の削除
                $posted_target_value = trim( (string) $_POST[$target_name] ); //前後空白の削除
            if ($posted_value != $posted_target_value) {
                $result->invalidate( $tag,"確認用のメールアドレスが一致していません");
            }
        }
    }
    return $result;
}

コメント