【完全ガイド】Contact Form 7のマルチステップフォームが動かない?原因と対処法まとめ

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

「ローカル環境では動いていたマルチステップフォームが、サーバーにアップした途端に動かない…」

WordPressでContact Form 7(CF7)を使って予約フォームなどを構築していると、こうしたトラブルに直面することがあります。
実際、私も「フォームが表示されるのにStep2に進めない」「送信ボタンを押しても無反応」といった事態に悩まされました。

この記事では、そんな私のつまずき経験をもとに、

  • 実際に発生したエラーの原因と解決策
  • 見落としやすいチェックリスト
  • トラブルを防ぐためのポイント

を初心者でも再現できるようにわかりやすく解説します。

この記事を読むとできるようになること

Contact Form 7で作成したマルチステップフォームが「本番サーバーでも正常に動作する状態」に調整できるようになります。

ワンクリックで目的地へGO!

トラブルの内容:ローカルでは動くのに、サーバーでStep2に進めない?

今回の状況

私が経験したトラブルは以下の通りです:

  • マルチステップフォームをローカルで構築→正常に動作。
  • 本番サーバーにアップした後、Step1の送信ボタンを押しても何も起こらない。(Step2に遷移しない)
  • コンソール上のエラー:"this form has been removed or is currently unavailable."
シロくま

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

いろいろ見直しても明確な原因がわからず、正直「なんか直った気がする」で片づけてしまうことも多かったのですが、今回はバシッと原因を特定できたので、備忘録として残します✍️

原因は「reCAPTCHAの読み込み漏れ」だった!

なぜ起きたのか?

実は、以前に以下のような設定をしていたことを思い出しました。

add_action('wp_enqueue_scripts', function() {
    if (is_page(123) || is_admin()) {
        return; // お問い合わせページと管理画面では読み込む
    }
    wp_deregister_script('google-recaptcha'); // それ以外のページでは読み込まない
}, 100);

このコードは、「ページIDが123のときだけreCAPTCHAを読み込み、それ以外では読み込まない」ように制御しています。TOPページやLPでreCAPTCHAが邪魔に見えないようにしたかったため、こうしていたのですが…

新たに作った予約フォームページ(例:ID2450)がこの対象外だったため、reCAPTCHAが読み込まれず、Contact Form 7が送信をブロックしていたのです。

Contact Form 7はreCAPTCHAを読み込めないと送信できない

Contact Form 7は、Google reCAPTCHAと連携してスパム対策を行っているため、対象ページでreCAPTCHAが読み込まれていないと、送信自体がブロックされます。

関連記事

解決策:functions.phpに対象ページのIDを追加する

今回のように、複数ページでマルチステップフォームを構成している場合は、以下のようにIDを追加します。

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

ページIDは、固定ページ編集画面のURL(post=xxxx)から確認できます。

ページIDの調べ方

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

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

再発防止のためのチェックリスト

過去にも何度かマルチステップフォームが動かないトラブルを経験してきたので、その原因と対処法を以下にまとめておきます。

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

まとめ:マルチステップフォームの落とし穴に気をつけよう

Contact Form 7のマルチステップフォームは非常に便利ですが、「ローカルでは動くのに本番で動かない」といった落とし穴がいくつか存在します。

今回紹介したように、

  • ページIDを適切に設定する
  • reCAPTCHAやJSまわりの読み込み状態を確認する
  • キャッシュやWAFなどの外部要因も視野に入れる

といった点を押さえておくことで、トラブルを未然に防げます。

この記事でできるようになったこと
→ Contact Form 7のマルチステップフォームが「本番サーバーでも正常に動作する」状態へ調整できるようになりました。

今後もつまずきポイントがあれば随時追記していきます。同じようなトラブルで悩んでいる方のヒントになれば嬉しいです!

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