@kokogento (ここ げんと)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

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を有効化した上で下記のようにコードを編集すると、一応問題は解決されました。。

スクリーンショット 2020-11-06 17.15.46.png

submission.php
    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();
0 likes

No Answers yet.

Your answer might help someone💌