之前推薦過在 WordPress 使用 Polylang 來建立多語系的網站,接著來進一步講一下該怎麼設定。
使用 Polylang 雖然可以簡單幫助我們設定多語系的內容,但選單的話還是得自己建立一次,他沒有那麼聰明可以直接對應我們設定的多語系頁面去對應,所以可以參考以下說明建立多語系的選單:
Step1:建立新的選單
有多語系的話需要一個語系獨立建立一個選單,從外觀->選單的地方,建立一個新的選單。
注意這邊選單名稱就可以對應之前建立的預設語系選單,比如預設語系是 main menu 的話,選單的名字就要設定為 main menu en。
語系的英文並不是隨便自訂的,要根據 Languages 那邊當時設定的 code 去設定你的選單代碼,像我就是設定這樣:
Step 2:放置選單
接著可以透過再安裝 Translatable Menu for Polylang 這個 plugin 來自動根據語系切換選單,以下這邊講的是自己修改 php 的做法。
透過 Polylang 的函式去抓出語系的 code:
if( function_exists('pll_current_language') ) { $lang_slug = pll_current_language('slug'); } else { $lang_slug = ''; }
抓出來的 $lang_slug 就會是 en 或 zh,會根據你設定的 code 判斷是哪一個,接著再把它丟到 WordPress 的 wp_nav_menu() 就好了,可以參考以下的 code:
$menu="main-menu"; $menu_name = $menu . '-' . $lang_slug; $menu_class = 'whatever-class-you-like'; // customise this wp_nav_menu( array( 'menu' => $menu_name, 'menu_class' => $menu_class, ), );
其中 $menu 就是在建立選單時設定的選單名稱,之後就會根據 code 切換是要顯示哪個選單,而 $menu_class 就是你自訂的選單 class name,看想怎樣客製化選單。
設定好後就可以看到依據不同語系顯示不一樣的選單了。