「ローカル環境では動いていたマルチステップフォームが、サーバーにアップした途端に動かない…」
WordPressでContact Form 7(CF7)を使って予約フォームなどを構築していると、こうしたトラブルに直面することがあります。
実際、私も「フォームが表示されるのにStep2に進めない」「送信ボタンを押しても無反応」といった事態に悩まされました。
この記事では、そんな私のつまずき経験をもとに、
- 実際に発生したエラーの原因と解決策
- 見落としやすいチェックリスト
- トラブルを防ぐためのポイント
を初心者でも再現できるようにわかりやすく解説します。
この記事を読むとできるようになること
Contact Form 7で作成したマルチステップフォームが「本番サーバーでも正常に動作する状態」に調整できるようになります。
トラブルの内容:ローカルでは動くのに、サーバーで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
)から確認できます。
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などの外部要因も視野に入れる
といった点を押さえておくことで、トラブルを未然に防げます。
今後もつまずきポイントがあれば随時追記していきます。同じようなトラブルで悩んでいる方のヒントになれば嬉しいです!