快速答案:WPML 底下每種語言都是一套獨立的選單,共用同一個「主選單」顯示位置,訪客切語言時 WPML 自動換。建法是先把預設語言的選單做完整,再用 WPML 的「WP 選單同步」把結構複製到其他語言;沒翻譯的頁面不會出現在那個語言的選單裡,所以順序是先翻頁面、再同步選單。Elementor 的 mega menu 則是模板,每種語言要各有一份。
為什麼會這樣 #
WordPress 的選單本身就是一種內容,WPML 把它跟頁面一樣當成「可翻譯的物件」:每種語言有自己的選單,各自有名稱、項目和順序,只是共用同一個顯示位置。這個設計的好處是每個語言可以有不同的項目(某個語言少一個分類、另一個語言多一個經銷商頁);壞處是它不會自動幫你維持一致,中文加了一頁,其他語言的選單不會自己長出來。
三個最常見的誤會:第一,在中文後台的「外觀 → 選單」看不到英文選單,是因為後台上方的語言切換器還停在中文,不是選單不見了。第二,同步時某些頁面被跳過,是那幾頁在該語言還沒有翻譯版,選單只能連到存在的頁面。第三,語言切換後選單整個消失,通常是該語言的選單沒有勾選「顯示位置」,或者換了頁首模板後位置名稱變了。
怎麼處理 #
- 先把預設語言的選單做到定案。結構、順序、子選單都確定,再往其他語言複製;之後每次改都從預設語言改起。
- 確認要出現在選單裡的頁面都已翻譯並發布。WPML → 翻譯管理裡看狀態,沒翻的先翻,不然同步時會被略過。
- WPML → WP 選單同步:勾選要同步的選單與語言,它會列出將新增、刪除、移動的項目,看過再確認。自訂連結的文字會列在字串翻譯裡,記得去翻。
- 到每個語言的「外觀 → 選單」檢查顯示位置:用後台上方的語言切換器切過去,確認該語言選單有勾主選單位置。
- Elementor 或 mega menu 外掛做的選單:那是模板不是 WordPress 選單,每種語言要各有一份模板;WPML 支援翻譯 Elementor 模板,但同步結構要手動。
- 改完清快取,並用無痕視窗切每一種語言看一次,手機版也看。
我們實際遇過的情況 #
一家有海外經銷通路的公司,各語言市場的產品線不同,我們替他們規劃成部分語言用新版選單、其他語言沿用舊版,同一個位置、不同語言掛不同結構,這正是 WPML 每語言獨立選單的用途。同一個站後來要替其中一個語言新增 mega menu,流程是客戶先建好該語言的頁面、翻譯改完,我們再把那個語言的模板掛上去,順序反了就會有一堆連到空頁的項目。另一次是某個語言的選單整個不見,這時先切到該語言的後台,看選單還在不在、有沒有勾顯示位置。翻譯完前台沒出現的其他情況,見WPML 翻譯沒顯示那篇。
什麼時候該找人 #
語言超過三種、選單結構各語言不同、或用 mega menu 外掛搭 Elementor 模板,這種站每加一個項目就要在好幾份模板裡各做一次,漏一份就有一個語言壞掉;多語外掛或 mega menu 外掛大版本更新後選單跑掉,多半是相容性問題,自己硬調 CSS 蓋不住。
WPTOOLBEAR網站工具熊