スキルアップを始める!

【Contact Form7】メールアドレスが正しいかどうか2回入力して検証するフォームを作成する

WordPress(ワードプレス)
WordPress(ワードプレス)
この記事は約4分で読めます。

※記事中に広告情報を含みます。

スキルを手に入れた時、人は強くなれる。
Youtubeでスキルアップを始める 電子書籍でスキルアップを始める
\ワードプレスのスキルアップはこちら!/ WordPress入門読本

メールアドレスが正しいかどうか2回入力して、検証するフォームを作成します。

フィルターフックに追加する

このコードは、Contact Form 7のバリデーションフィルタを追加するためのものです。functions.phpやスニペットに追加することで機能します。

参考ページ▼

Custom validation | Contact Form 7
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()メソッドを使用してエラーメッセージを設定し、そのオブジェクトが返されます。

URLをコピーしました!