Contact Form 7はデフォルトで最低限の項目が用意されています。当然Emailの入力項目も含まれていますが、入力したEmailが正しいかどうか確認する確認用のEmail入力欄はありません。特にビジネスでウェブサイトを使用する場合、Emailアドレスが誤って入力されていたら、いくら先方が自社製品に関して問合せをして下さっても「コンタクトをとれない」という最悪の状態になってしまいます。
そこで、今回はContact Form 7に確認用メールアドレスの項目を追加する方法をご紹介します。
function.phpを修正する
不慣れな方は、あまりphpに手を加えたくないと思われるかもしれません。しかし、今後カスタマイズをする上でphpの編集は避けては通れません。編集前に必ずバックアップを取っておくのを忘れないでください。バックアップを取っておけば問題ありません。
①ダッシュボードの「外観」→「テーマの編集」を開いてください。
※使用しているテーマによっては「テーマの編集」が表示されない場合があります。その場合はFTPでfunction.phpをダウンロードし、修正後アップロードします。function.phpは、「wp-content」→「themes」→「使用しているテーマのフォルダ」内にあります。FTPでfunction.phpをダウンロードされる方は、この後の③にお進みください。
②テーマの編集を開くと画面右側にphpのリストが表示されてます。この中から「テーマのための関数(function.php)を選択します。
③ function.phpに以下のコードを追加します。場所はどこでもかまいません。そのままコピー&ペーストしてください。
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", " " ) ) ) : ''; if ($name == "your-email"){ $my_email_confirm=$value; } if ($name == "your-email_confirm" && $my_email_confirm != $value){ $result->invalidate( $tag,"確認用のメールアドレスが一致していません"); }return $result; }
④ダッシュボードで編集していた方は「ファイルを更新」、ダウンロードして編集していた方は保存したfunction.phpをアップロードしてください。
Contact Form 7に確認用メールアドレス項目を追加する
Contact Form 7のEmail入力項目は[email* your-email]でした。function.phpで追加したコードはこのyour-emailに対して確認を行います(Email入力項目の名前がyour-emailでない場合は機能しませんのでご注意下さい)。
新しく作成した確認用メールアドレス項目のショートコードは[email* your-email_confirm]です。フォームの任意の場所にこのショートコードを入力すれば、メールアドレスの確認項目を追加することができます。