今回は、下記の状況で発生した不具合を解決します。
- 「ContactForm7」に、確認画面用プラグイン「ContactForm7 add confirm」を使用している
- 「Contact Form CFDB7」で、お問合せ内容をcsvデータ化してダウンロードしたい
今回起きた不具合
フォーム送信の流れとしては、
内容入力→確認画面→実際の送信→送信完了画面
という作りです。
送信後にContact Form CFDB7を確認すると、全く同じデータが4秒差で2つ作成されています。
どうやら、確認画面の時点でもContact Form CFDB7に情報が渡ってしまっているようです。
使用しているプラグイン
今回使用しているのは、以下のプラグインです。
- ContactForm7(Version: 5.3.2)
- ContactForm7 add confirm(Version: 5.1)
- Contact Form CFDB7(Version: 1.2.5.9)
解決方法
今回は、Contact Form CFDB7プラグインの中身を変更していきます。
プラグインに直接変更を加える場合に注意したいのは、プラグイン自体にアップデートがあった場合に上書きされてしまうので、アップデート後も変更が必要になるという点です。
触るファイルは、プラグインの最上階層にある「contact-form-cfdb-7.php」というファイルです。
116行目を変更します。
また、現時点でのプラグインのバージョンは、1.2.5.9ですが、使用バージョンが変われば記述箇所や内容も変わっている可能性もあります。ページ内検索するなど、行数は目安としてください。
変更前↓
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;
}
step2は実際の送信時です。step1(確認画面)ではデータを取得せず、step2(送信時)にデータを取得する、という指示をします。
これで確認画面では情報が渡されず、送信をした時点で渡されるようになりました。
2022.04.26追記
旧サイトにて、Confirm Plus Contact Form 7での同現象について、閲覧者様よりコメントをいただきました。
「Confirm Plus Contact Form 7」の場合は、下記の通り変更するとのこと。
contact-form-cfdb-7.php 116行目変更の[‘_wpcf7cp’]以下の部分
[‘_wpcf7cp’] ===’status_confirm’ ) {
if-creative様、情報ありがとうございました。
2022.05.23追記 こちらのプラグインに関しては、当方ではインストール・検証しておらず、現在質問にはお答えできかねます。今後使用することがあれば、再検証するかも…?
コメント