Contact Form 7|マルチステップフォームがうまく動作しない時の備忘録【随時更新】

記事内にプロモーションを含む場合があります。
Contact Form 7|マルチステップフォームがうまく動作しない時の備忘録【随時更新】

WordPress+Contact Form 7でマルチステップフォームを実装していると、
「ローカルでは正常に動くのに、サーバーにアップすると動かない」
「フォームは表示されるけど、Step2に進めない」
「送信ボタンを押しても反応しない」
……といったトラブルが、実はたびたび起こります。

シロくま

なぜか毎回どこかでつまづいてるな〜…😭

ローカルでは問題なかったのに、サーバーにアップしたら急に動かない…

エラーも何が原因かわかりにくいし、結局「なんか直った」で済ませてたけど、今回は原因がバチッと特定できた!ので備忘録として残します✍️

この記事では、そんな自分の経験をもとに、実際にハマった原因と解決策をまとめつつ、
再発防止のチェックポイントもあわせて記録していきます。

主なトラブル内容(今回のケース)

  • マルチステップフォームをローカルで構築し、正常動作を確認
  • サーバーにアップ後、Step1のフォーム送信時に何も起こらない(Step2に遷移しない)
  • コンソール上のエラー:"this form has been removed or is currently unavailable."
ワンクリックで目的地へGO!

原因と解決策(今回のケース)

原因:reCAPTCHAが対象ページで読み込まれていなかった

以前、視認性の都合でTOPページなどにreCAPTCHAを表示させないよう設定していたため、
マルチステップフォームの新たに追加した「入力ページ(例:ID2450)」にreCAPTCHAが適用されず、送信時にエラーが発生していました。

上記設定は、以下の記事でも紹介していた通り:

関連記事

functions.php で「特定ページのみreCAPTCHAを有効にする」設定をしていたが、 マルチステップフォームの入力ページ(例:ID2450)が対象に入っていなかった。

add_action('wp_enqueue_scripts', function() {
    if (is_page(123) || is_admin()) {
        return; // お問い合わせページ・ログインページ・管理画面ではスクリプトを読み込む
    }
    wp_deregister_script('google-recaptcha'); // それ以外のページでは解除
}, 100);

これはつまり:

  • 「ページIDが123のとき」だけ reCAPTCHA を読み込む
  • それ以外のページでは強制的に読み込みを解除する(=reCAPTCHA効かない)

予約フォームページがページID 123じゃないなら、
reCAPTCHAスクリプトが読み込まれない → Contact Form 7がreCAPTCHA依存で送信をブロックする → 送信失敗になる
という流れが完全に当てはまります。

解決策:ページIDを追加

予約フォームページのIDが仮に 2450 だったら、下記のように追記すればOK

if ( is_page([123, 2450, 2452, 2455]) || is_admin() ) {
    return;
}

→ これで入力ページでもreCAPTCHAが正しく動作し、送信が正常に行えるようになりました!

ページIDの調べ方

WordPress管理画面で固定ページ一覧を開いて、予約フォームの編集画面に入り、
URL末尾の post=2450 のような数字がそのページのIDです。

その他、過去に起こった原因やチェックポイント(落とし穴リスト)

チェック項目内容対応方法
フォームID・スラッグの記述ミスfirst_stepのURLが間違っている、存在しないIDを指定しているContact Form 7のID/固定ページのスラッグを再確認
マルチステップショートコードがdivタグで囲まれているテーマやJSによっては正しく動作しないことがあるうまく動かない場合は一度、ラップなしで試してみる
JavaScript/CSSのキャッシュサーバーやブラウザに古いコードが残っている強制リロード(Ctrl+F5)やサーバーキャッシュ削除
FlatpickrなどJSとの競合JSが多重に読み込まれている、初期化が早すぎる読み込み順・対象セレクタ・エラー出力をチェック
reCAPTCHAの読み込み漏れ除外設定していて必要なページに読み込まれていないfunctions.phpで対象ページのIDを追加する
WAF(Web Application Firewall)サーバー側でフォーム送信がブロックされているWAFを一時無効にして確認、必要なら設定調整
コピペ時の全角スペース・引用符"first_step"などの記述が全角に変わってしまう手動で再入力して確認する
固定ページが公開状態でない下書きや非公開になっていて遷移できないステップ用のページが「公開」になっているか確認

Contact Form 7のマルチステップフォームは便利だけど、設定ミスや環境差によって思わぬところで動かなくなることがあります。

この記事は、つまづいたときに読み返す用の自分メモとして更新していきます。
同じように困っている方のヒントにもなれば嬉しいです!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
ワンクリックで目的地へGO!