パソコン、WEB、スマホ、ガジェットなどの総合情報サイト(ブログ)

LifeEdge-ライフエッジ-

contact form7でメールアドレスの確認用フォームを追加する方法

WordPressでフォームを作成する時に重宝するのがcontact form7というプラグインですが、デフォルトでメールアドレスに確認フォームは準備されていません。

そこで今回は、contact form7でメールアドレス確認用フォームの追加方法をご紹介したいと思います。

 contact form7でメールアドレスの確認用フォームを追加する方法

function.phpに以下のコードを追加します。function.phpは記述を誤ると、画面が真っ白になるなどの顔面蒼白状態に陥る危険があるので、できえば子テーマを作成しておこなうのがベストです。親テーマのままやるのでしたら、一応元のソースコードをコピーしておきましょう。

//コンタクトフォーム メールアドレス再確認
add_filter( 'wpcf7_validate_email', 'wpcf7_validate_email_filter_extend', 11, 2 );
add_filter( 'wpcf7_validate_email*', 'wpcf7_validate_email_filter_extend', 11, 2 );
function wpcf7_validate_email_filter_extend( $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)){ //確認用メルアド入力フォーム名を ○○○_confirm としています。
$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;
}

続いて、コンタクトフォームの任意の位置に以下を記述します。

[email* your-email]
[email* your-email_confirm]

こんな感じです。

これで完了です!

もしメールアドレスが一致していないと「確認用のメールアドレスが一致していません」と警告文が出ます。

function.phpの記述間違いだけは気をつけましょう!

まとめ

今回は「contact form7でメールアドレスの確認用フォームを追加する方法」をご紹介しました。

実はこれ、クライアントさんに言われてはじめて気づきました。それまであまり意識してなかったので、実装してませんでした。。。不覚。

メールアドレスが間違えていると、後々トラブルの原因になりますからね。

実装自体は簡単ですが、function.phpの取扱は注意してください。

今回はこの辺で。少しでもお役に立てれば幸いです。