Contact Form CFDB7とContact Form 7 add confirmを併用した場合、データが重複する

今回は、下記の状況で発生した不具合を解決します。

  • 「ContactForm7」に、確認画面用プラグイン「ContactForm7 add confirm」を使用している
  • 「Contact Form CFDB7」で、お問合せ内容をcsvデータ化してダウンロードしたい

今回起きた不具合

フォーム送信の流れとしては、
内容入力→確認画面→実際の送信→送信完了画面
という作りです。

送信後にContact Form CFDB7を確認すると、全く同じデータが4秒差で2つ作成されています。

どうやら、確認画面の時点でもContact Form CFDB7に情報が渡ってしまっているようです。

使用しているプラグイン

今回使用しているのは、以下のプラグインです。

解決方法

今回は、Contact Form CFDB7プラグインの中身を変更していきます。
プラグインに直接変更を加える場合に注意したいのは、プラグイン自体にアップデートがあった場合に上書きされてしまうので、アップデート後も変更が必要になるという点です。

現時点でのプラグインのバージョンは、1.2.5.9です。
触るファイルは、プラグインの最上階層にある「contact-form-cfdb-7.php」というファイルです。

116行目を変更します。
変更前↓

    if ( $submission ) { // ここを変更

        $allowed_tags = array();

        if( $strict_keys ){
            $tags  = $contact_form->scan_form_tags();
            foreach( $tags as $tag ){
                if( ! empty($tag->name) ) $tags_names[] = $tag->name;
            }
            $allowed_tags = $tags_names;
        }

変更後↓

    if ( $submission  && $_POST['_wpcf7c'] ==='step2' ) { // ここを変更しました

        $allowed_tags = array();

        if( $strict_keys ){
            $tags  = $contact_form->scan_form_tags();
            foreach( $tags as $tag ){
                if( ! empty($tag->name) ) $tags_names[] = $tag->name;
            }
            $allowed_tags = $tags_names;
        }

これで確認画面では情報が渡されず、送信をした時点で渡されるようになりました。

コメント

タイトルとURLをコピーしました