後台按了「儲存選單」,前台卻沒有反應?
不少香港站長都遇過同一個情境:在 WordPress 後台拖好選單排序、按下儲存,重新整理前台卻發現導覽列原封不動,甚至多了一個不知從何而來的項目。問題往往不在主題,而是在選單項目本身的資料結構出了狀況。要排查這類問題,先理解一個選單項目在系統裡到底由哪些欄位組成,會比盲目重裝外掛有效率得多。
一個選單項目的資料長怎樣
在 WordPress 的資料庫中,每個導覽選單項目都是獨立的一筆記錄,並以 nav_menu_item 這個文章類型儲存。它同時帶有幾個關鍵欄位,決定這個項目顯示什麼、連去哪裡、以及放在哪一層:
- type:項目類型,常見值包括
post_type(指向文章或頁面)、taxonomy(指向分類或標籤)、custom(自訂連結)。 - object:當 type 為 post_type 或 taxonomy 時,這裡會記錄具體是哪一種內容,例如
page或category。 - object_id:對應內容的 ID。若 type 是 custom,這個值通常為 0。
- menu_item_parent:上層項目的 ID,用來建立下拉式選單的層級關係;頂層項目為 0。
- nav_menu_term_id:這個項目隸屬於哪一個選單。
- position:在同一層之中的排序位置。
- title:自訂顯示文字,留空時系統會自動採用內容本身的標題。
- url:僅在 type 為 custom 時使用,記錄自訂連結網址。
- target:連結開啟方式,例如另開新視窗。
- classes、xfn、attr_title、description:分別對應 CSS 類別、關係標記、滑鼠提示文字與描述欄位,多數情況下可以留空。
- status:發布狀態,一般為
publish。 - _invalid:標記該項目是否已失效,例如原本指向的頁面被刪除。
為什麼會出現「孤兒項目」
當一個選單項目原本指向某篇文章或某個分類,而該內容後來被刪除、改為草稿,或更改了固定連結結構,項目本身仍然存在,只是無法再正確解析目標。這時前台可能顯示空白、跳回首頁,或者乾脆不出現。判斷方法很直接:檢查該項目的 object_id 是否仍對應到有效內容,以及 _invalid 是否被標記為 true。
另一個常見情況是外掛或主題在匯入示範內容時,把項目指向了示範網址。這類項目即使能顯示,點擊後也只會連到無關頁面,建議逐一核對 url 欄位。
2026 年值得留意的幾個變化
區塊主題(block theme)普及之後,導覽選單的編輯方式與傳統自訂器已有明顯分別。部分主題改用區塊形式的導覽,選單資料仍然沿用同一套結構,但前台渲染邏輯由區塊處理,因此排查時要同時確認區塊設定與選單本身。此外,越來越多站點採用多語或無頭(headless)架構,選單項目可能由 API 輸出,若發現前台順序與後台不一致,值得檢查快取層是否仍保存舊版本的選單資料。
實務排查次序建議
- 先在後台確認選單已指派到正確的顯示位置,很多「無反應」其實只是位置未設定。
- 逐項檢查是否有失效連結,特別是曾經刪除過頁面的站點。
- 清除頁面快取與物件快取後再測試,避免讀到舊資料。
- 若問題只出現在某個主題,可暫時切換至預設主題比對,以判斷是主題渲染還是資料本身出錯。
- 修改資料庫前務必先備份,直接改動欄位有機會令選單整組失效。
常見疑問
可以直接在資料庫修改選單項目嗎?
技術上可以,但風險不低。選單項目與多個欄位互相關聯,手動改動容易造成層級錯亂。除非有明確需要,否則建議透過後台介面調整。
選單項目數量有上限嗎?
系統本身沒有硬性上限,但項目過多會影響後台載入速度與前台使用體驗,尤其是手機版。與其把所有頁面塞進主選單,不如善用分類與頁尾連結分流。
為何專案中的網址顯示為 example.invalid?
example.invalid 屬於保留的示範網域,不會指向真實網站。若在匯入的資料中見到這個網址,通常代表該項目從未設定過實際連結,應盡快更新或移除。
以上內容為一般性技術說明,並非針對個別網站的診斷建議。實際操作前請先備份網站資料,如有需要,可諮詢熟悉 WordPress 架構的開發人員。

