メールアドレスが正しいかどうか2回入力して、検証するフォームを作成します。
フィルターフックに追加する
このコードは、Contact Form 7のバリデーションフィルタを追加するためのものです。functions.phpやスニペットに追加することで機能します。
参考ページ▼
add_filter( 'wpcf7_validate_email*', 'custom_email_confirmation_validation_filter', 20, 2 );
function custom_email_confirmation_validation_filter( $result, $tag ) {
if ( 'your-email-confirm' == $tag->name ) {
$your_email = isset( $_POST['your-email'] ) ? trim( $_POST['your-email'] ) : '';
$your_email_confirm = isset( $_POST['your-email-confirm'] ) ? trim( $_POST['your-email-confirm'] ) : '';
if ( $your_email != $your_email_confirm ) {
$result->invalidate( $tag, "Are you sure this is the correct address?" );
}
}
return $result;
}
このコードは、WordPressのプラグインであるContact Form 7を拡張するためのものです。このコードを使用することで、フォームの送信前に特定のバリデーションルールを設定することができます。
このコードでは、Contact Form 7のフィルター関数add_filter()を使用して、特定のバリデーションルールを追加しています。この関数には、以下の引数が必要です。
- フィルターフック名(’wpcf7_validate_email*’)
- フィルター関数の名前(’custom_email_confirmation_validation_filter’)
- プライオリティー(20)
- 引数の数(2)
次に、フィルター関数custom_email_confirmation_validation_filter()が定義されています。この関数は、2つの引数$resultと$tagを受け取ります。
- $result:バリデーション結果を含むオブジェクト
- $tag:フォームタグの情報を含むオブジェクト
この関数では、$tagオブジェクトからフォームタグの名前を取得し、’your-email-confirm’と比較しています。
もし一致していた場合、送信されたメールアドレスと確認用メールアドレスが一致するかどうかを確認します。
一致しない場合、$resultオブジェクトのinvalidate()メソッドを使用して、エラーメッセージを設定します。
コンタクトフォームの名前を設定する
あとは、それぞれのフォームの名前を、上記のコードに合わせます。
<label> メールアドレス
[email* your-email] </label>
<label> メールアドレス確認
[email* your-email-confirm] </label>
[submit "送信"]
実行してみます。
「Are you sure this is the correct address?」
と表示されました。
まとめ
この関数は、バリデーション結果を含むオブジェクト$resultを返します。バリデーションに合格した場合は、このオブジェクトはそのまま返されます。
バリデーションに失敗した場合は、$result->invalidate()メソッドを使用してエラーメッセージを設定し、そのオブジェクトが返されます。