Wordpress/Movable Type

2016年5月12日 at 5:29 PM

WordPress ContactForm7にて、確認用メールアドレスの入力チェックを行うには?

お問い合わせフォームプラグインであるContactForm7。

 

 

確認用メールアドレスの入力を追加するには、以下のようにします。(私は、Contact Form7 バージョン 4.1.1 で修正し、正常動作を確認しています)

なお、ContactForm7はバージョンにより内部構造が異なり、以下のようにしないと、

 

・Wordpress(PHP)がうまく動作しない  例:テーマの編集を保存しようとすると、空白ページが表示される

・メールアドレスの入力が確認用メールアドレスの入力と一致しない場合、「確認用のメールアドレスが一致していません」と表示されず、「Null」というメッセージが出力される

 

 

など、うまく動作しません。

 

 

●\wp-content\plugins\contact-form-7\includes/functions.php

 

以下行を末尾の「?>」の直前あたりに追加

 

/*** add confirm mail add on 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 ) {
    $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'] = array( $name => '確認用のメールアドレスが一致していません' );
                }
            }
        }
    }
    return $result;
   
}
 
 
●Contact Formのメールフォーマット
 
 
<p>メールアドレス<br />
[email* your-email] </p>
 
<p>メールアドレス (確認用)<br />
[email* your-email_confirm] </p>
 
 

 

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



こちらの関連記事もオススメ!