【WordPressカスタマイズ】Contact Form 7でメールアドレスの確認用欄と一致チェック機能をつける方法

Contact Form7でメールアドレスの確認用欄を作って、メールアドレスが一致しているかチェックをする機能をつける方法です。

Contact form7を編集する

まず、Contact form7の編集画面でこのように書きます

<dl>
  <div>
    <dt>メールアドレス<span class="req">*</span></dt>
    <dd>[email* your-email]</dd>
  </div>
  <div>
    <dt>メールアドレス確認<span class="req">*</span></dt>
    <dd>[email* your-email-confirm placeholder "※確認のためもう一度入力してください"]</dd>
  </div>
</dl>

確認用メールアドレスの名前は必ずメールアドレスのタグ名に-confirmを付けた名前にします。

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;
}

以上で実装されます。