WordPress:[Contact Form 7] メールアドレス確認と送信前確認

自分のための備忘録として記載します。


Contact Form 7 メールアドレス確認入力

メールアドレスの確認入力を追加してチェックする機能。

項目名 your-email_confirm とする。

まず、contact-form-7/includes/functions.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]) {
                $result['valid'] = false;
                $result['reason'][$name] = '確認用のメールアドレスが一致していません';
            }
        }
    }
    return $result;
}
?>

Contact Form 7 メール送信前の確認を追加

プラグインで Contact Form 7 add confirm を追加し、有効化。 フォームの設定を下記のようにする。

[submit][confirm][back]