Contact form 7で確認用のメールアドレスのエラーチェックを入れるためのおぼえがき。

Contact Form 7でメールアドレスをチェックさせようとしたら、そういう機能はないのね、、
いつもどおり、ちゃーんと実装されている方がいらっしゃいました。

[Contact Form 7 4.1] 確認用メールアドレスのエラーチェック(最新版対応)

しかも、最新版に対応されていました。ありがとうございます。

functions.phpに下記を追加。

/*** add confirm mail add on 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]) {
                if (method_exists($result, 'invalidate')) {
                    $result->invalidate( $tag,"確認用のメールアドレスが一致していません");
                } else {
                    $result['valid'] = false;
                    $result['reason'] = array( $name => '確認用のメールアドレスが一致していません' );
                }
            }
        }
    }
    return $result;
	
}

フォームのショートコード部分はこんなかんじで。

<p>メールアドレス<br />
[email* your-email] </p>

<p>メールアドレス (確認用)<br />
[email* your-email_confirm] </p>

こういうの、結構使うので助かります!

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です