Contact Form 7 の設定あれこれ

構築・開発WordPress
スポンサーリンク

確認画面を追加する

「Contact Form 7 add confirm」プラグインを追加
https://ja.wordpress.org/plugins/contact-form-7-add-confirm/

それぞれの画面時に表示されるクラスです。

入力画面クラス; .wpcf7c-elm-step1
確認画面クラス: .wpcf7c-elm-step2
完了画面クラス: .wpcf7c-elm-step3

<div class="wpcf7c-elm-step1 wpcf7c-elm-step2">
    <table>
        <tr>
            <th>お名前[※]</th>
            <td>[text* your-name]</td>
        </tr>
        <tr>
            <th>内容</th>
            <td>[textarea your-message]</td>
        </tr>
    </table>
</div>
<div class="wpcf7c-elm-step1">
    [confirm "確認する"]
</div>
<div class="wpcf7c-elm-step2">
    [back "修正する"]
    [submit "送信する"]
</div>
<div class="wpcf7c-elm-step3">
    <p>お問い合せありがとう!</p>
</div>

 

メールアドレスの再入力確認

<th>メールアドレス</th>
<td>[email*email]
    確認のため、再入力してください。
    [email*email_confirm]
</td>
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'][$name] = '確認用のメールアドレスが一致していません';
                }
            }
        }
    }
    return $result;
}

 

メッセージボックスの配置を変更する

挿入したいところに [response] を入れる。

複数入れることも可能なので、入力フィールドの上下に設置することもできます。

 

完了画面を別ページにリダイレクト

完了ページを別途固定ページなどで作成します。
location.replace(‘/complete/’); の箇所にリンク先を設定してください。

add_action( 'wp_footer', 'mycustom_wp_footer' );
function mycustom_wp_footer() {
?>
    <script type="text/javascript">
        if($('.wpcf7').length){
            var wpcf7Elm = document.querySelector( '.wpcf7' );
            wpcf7Elm.addEventListener( 'wpcf7mailsent', function( event ) {
                location.replace('/complete/');
            }, false );
        }
    </script>
<?php
}

 

コメント

スポンサーリンク
タイトルとURLをコピーしました