表題の通り。
WordPressで最も使われているだろうメールフォームプラグイン「ContactForm7」。
これにメールアドレスの二重確認を実装する方法として、smilkobutaさんのサイトで紹介されているコードが広く使われていて、僕も利用させて頂いていたのですが・・・しばらく触っていない間にContactForm7のバージョンアップに伴い2つのメールアドレスが一致しなくても警告が出ず送信されるようになっていたので、ちょっと手直ししてみました。→smilkobutaさんの方でも対応されたようです。smilkobutaさんのサイトのコードの方もオススメしておきます。
functions.phpなどに追記している従来のコードを、以下のものと差し替えてみて下さい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
///Contact Form 7に確認用メールアドレスを追加 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 ) { global $my_email_confirm; $tag = new WPCF7_Shortcode( $tag ); $name = $tag->name; $value = isset( $_POST[$name] ) ? trim( wp_unslash( strtr( (string) $_POST[$name], "\n", " " ) ) ) : ''; //ひとつ目のメールアドレス項目の名称(ここでは'your-email')を$nameに代入。 if ($name == "your-email"){ $my_email_confirm=$value; } //ふたつ目のメールアドレス項目の名称(ここでは'your-email_confirm')を$nameに代入。 if ($name == "your-email_confirm" && $my_email_confirm != $value){ $result->invalidate( $tag,"確認用のメールアドレスが一致していません"); } return $result; } |
注意点としては、メールアドレス項目に使う名前をそれぞれ$nameに代入してやる必要があります。
まあ、管理画面での設定が、
1 2 |
メールアドレス:[email* your-email] 確認用:[email* your-email_confirm] |
のままであれば、上記ソースのままでも使えます。
その他にも、警告表示が確認用のアドレスの方にしか表示されないなどsmilkobutaさんのサイトの方法を完全に置き換えられるものではありませんし、Contactform7の今後のアップデートに耐えられるものかどうか分かりませんが、どうぞ何かにご参考下さい。