Gravity Forms 換新版 Markup 後,兩欄排版與快取要一起處理
整理日期:2026-09-05
補充日期:2026-09-06,補上 Spam 紀錄保留與定期檢查方式。
Gravity Forms 升級後,表單送出沒有前往原本設定的感謝頁,已經填過的欄位重新顯示必填錯誤,部分真人資料還被放進 Spam。
關閉 Enable Legacy Markup 後,送出流程恢復正常,但原本的兩欄排版跑掉,部分欄位在桌機與手機上也黏得太近。
先拆成幾層看
Section titled “先拆成幾層看”- 表單使用 Legacy Markup 還是新版 Markup。
- 兩欄版面是舊 Ready Classes,還是新版 Layout Editor 的 Grid。
- Elementor 表單元件有沒有另外設定負間距。
- WP-Optimize、CDN 或瀏覽器是否還在提供舊表單 HTML 與狀態。
- Entry Notes 是哪一條 Spam 規則判定,不要只看 Spam 標籤。
舊表單使用 gf_left_half、gf_right_half 排兩欄,這兩個 Ready Classes 已經被 Gravity Forms 標示為 deprecated,新版應改用 Form Editor 內建的 Column Layout。
切換新版 Markup 只處理 HTML 結構,不會自動修好頁面編輯器留下的樣式。表單元件原本把欄位間距設成負值,換成新版 Grid 後就會互相擠壓,改回正常間距才會恢復。
快取是另一層問題。Gravity Forms 顯示表單時會產生 state,送出時再比對欄位設定與允許值,官方文件也明確說明 state validation 會受快取影響。修改表單後如果前台仍拿到舊頁面,真人送出的內容也可能和目前設定對不上。
Entry Notes 顯示 The form failed state validation before it was successfully submitted,只能確認 state validation 曾失敗,不能只靠這句話判定對方一定是機器人或手動竄改。
把舊兩欄改成新版 Grid
Section titled “把舊兩欄改成新版 Grid”先備份表單設定,再關閉 Legacy Markup,移除 gf_left_half、gf_right_half,改用 Gravity Forms 內建欄位 Grid:
- 一般相鄰欄位排成
6 + 6。 - Textarea 或沒有配對的欄位使用
12。 - 同一列欄位使用相同的 layout group。
- 欄位寬度需要填滿容器時,再把 Field Size 設為 Large。
Gravity Forms 官方的 Ready Classes 遷移說明 已把左右半欄列為 deprecated,替代方式就是 Column Features。
批次處理時不要整份 Form Object 直接覆蓋。每個表單先讀取原始設定,只更新 Markup、欄位 layout 與必要的顯示屬性,完成後再回讀確認通知、感謝頁、條件邏輯與其他欄位設定沒有被改掉。
把頁面編輯器的負間距歸零
Section titled “把頁面編輯器的負間距歸零”如果頁面使用 Elementor 的 Gravity Form Styler,檢查 Spacing 裡的 Between Two Fields。舊版曾用 -20px 壓縮間距時,新版 Grid 很容易黏在一起,可以先調回 0px 再看前台。
不要再用另一個負 margin 把畫面拉回去,這只會讓桌機暫時看起來正常,手機版通常會再跑掉。
處理必填提示
Section titled “處理必填提示”Required Field Indicator 選擇 Text: (Required) 時,Gravity Forms 會把文字放在每個必填欄位,不輸出 required legend。
如果仍想保留欄位旁的星號,只隱藏 "*" indicates required fields,可使用官方提供的 filter:
<?php
add_filter( 'gform_required_legend', '__return_empty_string' );需要只套用單一表單時,可把 Form ID 加在 hook 後面,例如 gform_required_legend_6。詳細用法可看 gform_required_legend 官方文件。
清除快取後再測送出
Section titled “清除快取後再測送出”表單結構或欄位選項改完後,至少清除 WordPress 頁面快取、CDN 快取與瀏覽器舊頁面,再測一次必填驗證、選單、錯誤後重送、感謝頁與通知。
清一次快取只能確保這次拿到新內容。如果真人誤判再次出現,應依 Gravity Forms 快取與 Script Optimizer 排查說明 暫停快取與 JS 最佳化做對照,再決定要排除特定表單頁或改用會刷新表單狀態的處理方式。
網站如果幾乎每篇文章與商品都有表單,不要一開始就把所有網址加入不快取清單,否則等於放棄大部分頁面快取。先確認是哪一層快取影響 form state,再決定範圍。
依 Entry Notes 調整 Spam 設定
Section titled “依 Entry Notes 調整 Spam 設定”Advanced Honeypot 可以保留,但偵測到 Links/URLs 時,先讓欄位驗證失敗,比直接把整筆詢問標成 Spam 更容易讓真人修正。
Honeypot 判定為 Spam 時,可選擇 Create an entry and mark it as spam,保留紀錄與 Notes,除了診斷原因,也讓日常檢查時有機會找回被誤判的真人詢問。
Submission Speed Check 若一直出現速度資料缺失或真人誤判,可以先停用做對照,確認問題後再依實際送出速度設定門檻。
若 Notes 指向 state validation,優先檢查快取、載入與送出網址、欄位選項及 JS 最佳化,不要直接用 filter 把所有 Spam 強制改成正常。Gravity Forms 的 Spam 判定說明 也列出 state、隱藏欄位、來源網址與送出速度等不同原因。
定期檢查 Spam,避免漏掉真人詢問
Section titled “定期檢查 Spam,避免漏掉真人詢問”表單送出時被判定為 Spam,原本設定的通知信不會照一般流程寄出,因此不能只靠收件匣判斷有沒有新詢問。
可以把檢查 Spam 排進每週的管理工作,確認是正常詢問後,在 Gravity Forms 標記為 Not Spam 並確認是否已聯絡客戶,若需要補寄通知,還要手動執行 Resend Notifications,不會因為改回正常狀態就自動補寄,詳見 Gravity Forms 的 Spam 檢查說明。
定期檢查能補上漏看的機會,但不能當成誤判原因已修好,持續出現真人誤判時仍要回到 Entry Notes 查原因。
不建議先做的事
Section titled “不建議先做的事”- 不要為了維持舊排版,重新開啟即將淘汰的 Legacy Markup。
- 不要保留
gf_left_half、gf_right_half,再用更多 CSS 硬補新版 Grid。 - 不要只清一次快取,就認定 state validation 不會再發生。
- 不要因為一筆真人被誤判,就關閉全部 Spam 防護。
- 不要還沒確認是哪一層快取,就把整個網站加入排除清單。
- 不要只看桌機,兩欄表單修改後要一起看手機版。
下次遇到可以先整理什麼
Section titled “下次遇到可以先整理什麼”- Gravity Forms 版本、Form ID 與 Markup 版本。
- 欄位使用的 Ready Classes 與 Grid 配置。
- 表單所在頁面及使用的 Elementor 表單元件。
- WordPress、主機、CDN 與瀏覽器有哪些快取。
- 是否有 Minify、Combine、Defer 或 Rocket Loader。
- Entry Notes 完整 Spam 原因。
- 關閉快取後,送出與感謝頁是否正常。
- 桌機與手機各一張前台畫面。
WordPressGravity FormsLegacy MarkupElementorWP-Optimize快取Spam表單驗證