2026年10月9日
2026年10月9日
Gravity Formsの条件付きロジックが動作しないときの原因と直し方
Gravity Formsの条件付きロジック(Conditional Logic)が効かないとき、原因の多くは「ルールの値が選択肢の値と一致していない」か「ページ上のJavaScriptが止まっている」のどちらかです。この記事では、症状の見分け方から始めて、起こりやすい順に原因を確認し、それぞれの直し方を説明します。読み終えるころには、どこを見れば原因を絞り込めるかが分かるようになります。
作業は本番サイトではなくステージング環境で行い、設定を変える前にフォームのエクスポートとサイト全体のバックアップを取っておいてください。Gravity Formsの画面表記はバージョンで変わることがあるため、本文では設定の目的で説明し、表記は目安として書いています(2026年10月現在)。
まず症状を切り分ける
「動作しない」にも種類があります。どれに当たるかで調べる場所が変わります。
- 管理画面のプレビューでは動くが、公開ページでは動かない:テーマや他のプラグイン、最適化・キャッシュ系の設定が原因である可能性が高いです。
- プレビューでも動かない:ルールの設定そのもの、または条件の元になるフィールドの値に問題があることが多いです。
- 表示の切り替えは動くが、送信後の通知や確認メッセージの条件分岐が効かない:フィールドの条件付きロジックとは別の、サーバー側で評価される設定の問題です。
- 最初は動くが、ページ送り(複数ページフォーム)や再表示のあとに動かなくなる:フォームをAJAXで読み込んでいる、ポップアップ内に置いている、といった読み込み方の問題です。
切り分けの最初の一手は、ブラウザの開発者ツール(F12キー)を開いて「コンソール」タブを見ることです。赤いエラーが出ていれば、そのエラーが条件付きロジックのスクリプトより先に処理を止めています。エラーメッセージに出てくるファイルのパス(例: /wp-content/plugins/◯◯/)から、どのプラグインやテーマが関わっているかが分かります。
原因1:ルールの値と選択肢の値が一致していない
最も多いのがこれです。ラジオボタンやドロップダウンには「ラベル(画面に表示される文字)」と「値(内部で使われる文字)」があり、フィールド設定で「値を表示」系のオプションを有効にすると、両者を別々に設定できます。条件付きロジックのルールは値で比較されるため、ラベルを変えたつもりで値が古いまま、あるいは値を変えたのにルール側が古い値のまま、という状態になると一致しなくなります。
確認方法は、条件を設定したフィールドのルールを開き、比較対象の選択肢が今の選択肢と同じものになっているかを見ることです。選択肢を作り直した場合は、ルールを一度削除して設定し直すのが早道です。テキスト入力を条件にしている場合は、全角・半角の違いや前後の空白でも一致しなくなる点に注意してください。
あわせて、「すべての条件に一致」と「いずれかの条件に一致」の選択も見直します。複数のルールを並べたときに意図と逆になっていると、どの組み合わせでも表示されない状態になります。
原因2:JavaScriptのエラーや最適化設定
条件付きロジックによる表示・非表示の切り替えは、ブラウザ側のJavaScriptで行われます。そのため、ページ内のどこかでスクリプトエラーが起きている、またはスクリプトの読み込み順が変わっていると動きません。
特に影響が大きいのが、キャッシュ・最適化プラグインの次のような機能です。
- JavaScriptの結合(複数ファイルを1つにまとめる)
- JavaScriptの遅延実行(ユーザー操作があるまで実行しない)
- jQueryの読み込み位置の変更や除外
確認方法は、最適化機能を一時的に無効にしてページを再読み込みし、動くかどうかを見ることです。動くようになったら、最適化プラグインの除外設定にGravity Formsのスクリプト(/plugins/gravityforms/ を含むパス)とjQueryを追加します。除外の書き方はプラグインごとに違うため、各プラグインのドキュメントを参照してください。CDN側でJavaScriptを書き換える機能(自動最小化など)を使っている場合も同様に確認します。
プラグインやテーマの競合を順に確かめるときは、公式ディレクトリにある「Health Check & Troubleshooting」プラグインのトラブルシューティングモードが便利です。自分のログインセッションだけプラグインを無効にした状態にできるので、訪問者に影響を与えずに一つずつ有効化して原因を特定できます。
原因3:テーマがwp_footer()を出力していない
Gravity Formsは条件付きロジックの初期化に必要なスクリプトを、テーマが wp_head() と wp_footer() を呼び出す位置に出力します。自作テーマや古いテーマで footer.php に wp_footer() が無いと、フォームの見た目は表示されても条件付きロジックが初期化されません。
確認方法は、ページのソースを表示して末尾付近に gform を含むスクリプトがあるかを見ることです。無ければテーマ側の問題なので、子テーマの footer.php で </body> の直前に wp_footer() を入れます。
<?php wp_footer(); ?>
</body>
</html>
標準テーマ(Twenty Twenty-Fiveなど)に一時的に切り替えて動くかどうかを見るのも、テーマ起因かどうかを判断する手早い方法です。
原因4:フォームを後から読み込んでいる
ポップアップ、タブ、モーダル、無限スクロールなど、ページ表示後にフォームのHTMLを差し込む仕組みを使うと、条件付きロジックの初期化が行われないことがあります。Gravity Formsのショートコードには ajax="true" のような属性があり、AJAX送信やページ送りのたびにフォームが描き直されます。
フォームが描画されたタイミングで独自の処理を走らせたいときは、Gravity Formsが発行するjQueryのイベント gform_post_render を使います。テーマのJavaScriptで次のように受け取れます。
jQuery( document ).on( 'gform_post_render', function ( event, formId, currentPage ) {
if ( 1 !== parseInt( formId, 10 ) ) {
return;
}
// フォームID 1 が描画された直後に行いたい処理をここに書く
console.log( 'form rendered', formId, currentPage );
} );
ポップアップ系のプラグインを使っている場合は、そのプラグインがGravity Formsとの併用方法を案内していないかを先に確認してください。
原因5:値をスクリプトで書き換えているのに変化が伝わらない
非表示フィールドや入力欄の値を、自作のJavaScriptや外部スクリプトで書き換えて条件の元にしているケースです。値を代入しただけでは、Gravity Formsが監視している入力イベントが発生しないため、条件が再評価されません。値を変えたあとに change イベントを発生させると再評価されます。
jQuery( '#input_1_3' ).val( 'premium' ).trigger( 'change' );
input_1_3 は「フォームID 1 のフィールドID 3」を表すHTMLのIDです。実際のIDはページのソースや開発者ツールで確認してください。
選択肢をPHPで動的に生成している場合は、gform_pre_render だけでなく gform_pre_validation、gform_pre_submission_filter、gform_admin_pre_render にも同じ処理を登録するのがGravity Formsの案内している方法です。表示時と検証時で選択肢が食い違うと、画面では条件どおりに見えても送信時の評価がずれます。
原因6:送信後の条件分岐(通知・確認)の設定
通知メールや確認メッセージにも条件付きロジックを設定できますが、これは送信後にサーバー側で評価されます。画面上の表示切り替えとは別の設定画面にあるため、フィールド側だけ直して通知側が古いまま、ということがよく起こります。
また、条件付きロジックで非表示になったフィールドの値は、送信時に空として扱われます。非表示フィールドの値を通知の条件に使っていると、思った条件で送られません。テスト送信をして、エントリー一覧に保存された値を確認しながら条件を調整してください。
原因7:キャッシュやバージョンの不整合
フォームを編集したのに公開ページが古いまま、という場合はページキャッシュやCDNのキャッシュが残っています。キャッシュを削除したうえで、ログアウトした状態(またはシークレットウィンドウ)で確かめます。
Gravity Forms本体とアドオンのバージョンが大きくずれていると、スクリプトの組み合わせが合わずに動かないこともあります。Gravity Formsの管理メニューにあるシステムステータス画面で、本体・アドオン・PHP・WordPressのバージョンをまとめて確認できます。更新する前にはバックアップを取ってください。
サポートに問い合わせる前に用意するもの
ここまで確認しても解決しない場合は、Gravity Formsの公式サポートに問い合わせるのが近道です。その際、次の情報をそろえておくとやり取りが早く進みます。
- システムステータスの内容
- ブラウザのコンソールに出ているエラー全文
- 標準テーマとGravity Forms以外のプラグインを無効にした状態で再現するかどうか
- 問題のフォームのエクスポートファイル(個人情報を含むエントリーは送らない)
まとめ
- まず開発者ツールのコンソールでJavaScriptエラーの有無を確かめ、プレビューと公開ページの違いで原因の範囲を絞ります。
- 最も多い原因は、ルールの比較値と選択肢の値の不一致です。選択肢を変えたらルールを設定し直します。
- 最適化プラグインのJavaScript結合・遅延実行、テーマの
wp_footer()欠落、後から読み込むフォームは公開ページだけで起こる典型例です。 - 値をスクリプトで変えるなら
changeイベントを発生させ、動的な選択肢は表示時と検証時の両方で同じ内容にします。 - 通知・確認の条件分岐は送信後に評価される別設定なので、テスト送信で確かめます。