Contact Form 7」で、メールの再入力チェック

contactForm7

入力フォームプラグイン「Contact Form 7」で、メールの再入力チェックを行いたいときのコードです。
UI的にはイマイチですが、この実装は要件によく含まれますね。

フォームの編集

WordPressの管理画面のコンタクトフォームの編集画面から以下のコードを入力します。

[email* inquiry_mail]
[email* inquiry_mail_confirm]

確認用のコードのname属性の末尾に_confirmを記述します。

function.phpの編集

「function.php」に以下のコードを記述します。

function wpcf7_main_validation_filter( $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'][$name] = '確認用のメールアドレスが一致していません';
        }
      }
    }
  }
  return $result;
}

add_filter( 'wpcf7_validate_email', 'wpcf7_main_validation_filter', 11, 2 );
add_filter( 'wpcf7_validate_email*', 'wpcf7_main_validation_filter', 11, 2 );

おわります。

No tags for this post.
タイトルとURLをコピーしました