WordPress × kintone のフォームにおいて、「確認」ボタンを押すとデータが送信されてしまう。
問題
Contact Form 7で作ったフォームがあり、データをkintoneに送信することはできています。「フォーム入力」→「確認画面」→「完了画面」の流れの中で、「確認画面」の時点でもデータが送信されています。(なのでkintoneに同じデータが2つ入る)
使用プラグインは下記の通りです。
「Contact Form 7」
「Contact Form 7 add confirm」
「Form data to kintone」
現状と知りたいこと
https://cocojam.jp/wordpress/923
上記リンクと同じ問題です。
しかし、Contact Form 7のバージョンが5.1.9以下なら、確認ボタンを押す事でkintoneにデータが送信される現象は発生しません。(kintoneプラグインのコードは編集していません)
Contact Form 7のバージョンが5.2以上になると、確認ボタンでkintoneにデータが送信される現象が発生します。。。
上記リンクの内容で問題の解決はできましたが、、、できれば原因を知りたいです。
Contact Form 7のバージョン5.1.9と、Contact Form 7バージョン5.2の差分を見比べてみたのですが、全くわかりません。。。
もし「バージョン5.2のここが原因なんじゃないかな?」とわかる方がいたら、教えていただきたいです!
追記(原因の箇所が分かった)
plugins/contact-form7/includes/submission.php
の一部のコードをバージョン5.1.9のものにすると、確認ボタンでkintoneにデータが送信される現象が発生しなくなりました!
なので、Contact Form 7バージョン5.2を有効化した上で下記のようにコードを編集すると、一応問題は解決されました。。
private function setup_posted_data() {
// contact form 7 バージョン5.2
//こっちはコメントアウトする
$posted_data = array_filter( (array) $_POST, function( $key ) {
return '_' !== substr( $key, 0, 1 );
}, ARRAY_FILTER_USE_KEY );
$posted_data = wp_unslash( $posted_data );
// contact form 7 バージョン5.1.9
// こっちを使うとなぜか正常に動く
$posted_data = (array) $_POST;
$posted_data = array_diff_key( $posted_data, array( '_wpnonce' => '' ) );
$posted_data = $this->sanitize_posted_data( $posted_data );
$tags = $this->contact_form->scan_form_tags();