跳到內容

Turnstile iframe 蓋住 WordPress admin bar

整理日期:2026-05-05

登入 WordPress 後,前台最上方的 admin bar 點不到。

admin bar 看得到,連結也存在,但滑鼠點下去沒有反應。從前台要回後台變得很不順。

這種問題很容易被誤判成 CSS、z-index 或上次改過 Logo 點擊範圍造成的副作用。

我會先拆成幾層:

  • admin bar 的連結是否真的存在。
  • 是 href 錯,還是 click 被別的元素吃掉。
  • 問題只在登入後出現,還是匿名訪客也會遇到。
  • 頁面上方是否有透明 iframe、popup、驗證碼或第三方 widget。
  • 最近有沒有改 reCAPTCHA、Turnstile、Gravity Forms 或 popup 設定。

只看 HTML 結構不一定夠。這種點不到的問題,要看滑鼠座標最上層到底是哪個元素。

頁面裡有一個 popup 設定成全站載入。

那個 popup 裡放了一個表單,表單使用 Cloudflare Turnstile。雖然 popup 看起來是隱藏的,但 Turnstile 仍然在頁面載入時插入 iframe。

Turnstile iframe 的實際位置跑到頁面左上角附近,剛好蓋住 WordPress admin bar。

所以 admin bar 不是壞掉,而是 click 被 Turnstile iframe 吃掉。

這類問題用 document.elementFromPoint(x, y) 很快可以確認。把座標放在 admin bar 上,回傳的不是 admin bar,而是第三方 iframe 相關元素,就知道方向了。

這次沒有改 WordPress 程式碼。

處理方式是到 Cloudflare Turnstile 後台,把對應 site key 的 widget mode 從可見模式改成 invisible。

改成 invisible 後,不會再渲染可見的 300px 左右 iframe,也就不會蓋住 admin bar。

不過改之前要確認這個 site key 有沒有被其他表單或其他網站共用。共用的話,影響範圍就不只這一個表單。

不要一開始就亂調 admin bar 的 z-index。

如果是第三方 iframe 蓋住,硬把 admin bar 疊上去不一定是乾淨解法,還可能讓其他互動壞掉。

也不要只測匿名訪客。admin bar 只有登入後才看得到,這種問題如果沒有登入測,就很容易漏掉。

  • 問題是否只在登入狀態出現。
  • 點不到的位置座標。
  • document.elementFromPoint(x, y) 回傳哪個元素。
  • 頁面是否有 popup、表單、reCAPTCHA、Turnstile 或 hCaptcha。
  • popup 是否全站載入。
  • 驗證碼 widget 是 visible、managed,還是 invisible。
  • site key 是否被其他表單共用。

只要是「看得到但點不到」的問題,我會先查最上層元素,而不是先猜 CSS。

  • Cloudflare Turnstile
  • Gravity Forms
  • Popup
  • admin bar
  • iframe
  • 點不到