WordPress

Contact Form 7でメールアドレスの再入力をチェックする機能を実装する

WordPressでお問い合わせフォームを実装できるプラグイン「Contact Form 7」で、メールアドレスを再入力して、間違いがないか確認する機能を実装する方法を紹介します。

お問い合わせフォームでは、メールアドレスを入力してもらう機会が多いですが、入力ミスがあった場合に、お問い合わせに返信しても届かないということが起きてしまいます。

そのようなことを防ぐためにメールアドレスを2回入力してもらって、両方のメールアドレスが一致しているか確認するための機能をつけます。

フォームを作成する

Contact Form 7に再入力をチェックする機能はないので、自分で実装する必要がありますが、お問い合わせフォーム自体はContact Form 7を使いたいので、まずはContact Form 7でフォームを作成します。

今回はこのような感じで、名前、メールアドレス、メールアドレス(確認用)、お問い合わせ内容 という項目を設けました。

このあと機能を実装していくわけですが、メールアドレスとメールアドレス(確認用)のタグにある「your-email」と「your-email-confirm」がポイントになるので、コードがあまりわからないのでそのまま使おうという人は同じように設定してください。

他の部分は適当に変えてもらって大丈夫です。

functions.phpで機能実装

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)){
   $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;
}

※全角スペースが含まれているため、コピペして使う場合はご注意ください。

コードについて簡単に解説します。

まず、フォームを作成した際に使用した[email* your-email]のタイプ(email)とname属性(your-email)の情報を取り出し、タイプが「email」もしくは「email*」の時に処理するようにしています。

ちなみに*は必須項目に設定している時につきます。

そして機能部分ですが、[email* your-email]に「-confirm」がついているかどうかを判断し、「your-email」と「your-email-confirm」の値を取得。比較して違っていれば「メールアドレスが一致していません」というエラー表示をするという感じです。

まとめ

フォームを作成するのと機能を実装するのは順番が逆でも大丈夫です。なんとなくフォームを先に作った方がわかりやすいと思って、今回はフォームを作成してfunctions.phpでメールアドレスの再入力チェックの機能を実装しました。

Contact Form 7は使う機会が多いと思うので、メールアドレスの再入力チェックが必要な場合は、この記事を参考にしてみてください。

関連記事
WordPressが学べるおすすめのプログラミングスクール

Leave a Comment