在前面的章節中,我們介紹了wordpress網站模闆開發中,使用wp_list_pages()和wp_list_categories()這2個函數來建立基于page頁面的導航菜單和基于分類目錄的導航菜單。但是,這2種方式建立出來的菜單不夠靈活,基于頁面的導航菜單就添加不了分類目錄,基于分類目錄的導航菜單也添加不了page頁面作為菜單。那麼,wordpress有沒有提供靈活一點的建立導航菜單的方法,能包含page頁面、分類目錄,甚至其它的選項。答案是肯定的。通過wordpress提供的方法,我們可以為wordpress網站模闆建立自定義導航菜單。下面,就随我一起來看看吧。
第一步:給主題注冊菜單功能。
wordpress網站背景預設情況下,沒有提供菜單選項,需要我們在wordpress主題模闆中來添加這個功能。這個,我們可以進入到wordpress背景的外觀去看看,如下圖:

是以,我們要先在wordpress主題的functions.php檔案中注冊菜單,代碼如下:
//菜單 register_nav_menus( array( 'menu_top' => '頭部導航', 'menu_bottom' => '底部導航', ) );
添加完上面的代碼,我們再到wordpress網站背景的外觀中看一下,這時,我們會發現多了一個“菜單”,這就是我們需要的自定義菜單。如下圖:
第二步:背景建立菜單。
給wordpress網站背景添加了菜單功能後,我們就可以在wordpress背景的菜單中建立前台網頁的自定義導航菜單了。點選“外觀”中的“菜單”,右側内容欄進入到菜單界面,如下圖:
點選上圖中的“建立新菜單”,進入到建立界面,如下圖:
填寫菜單名,點選“建立菜單”,進入到菜單結構界面,如下圖:
在這個菜單結構界面,我們可以選擇左側的“添加菜單項”中的頁面、分類目錄、文章、自定義連結這幾個選項中的子項,然後點選“添加到菜單”,就添加到右側的菜單結構中,想在wordpress網站前台導航菜單中顯示什麼,就選擇什麼。如下圖:
然後,勾選“顯示位置”,再點選儲存菜單按鈕,就可以了。
第三步:在頭部調用這個菜單。
wordpress背景建立好了菜單後,我們要想在wordpress網站前台顯示,還需要我們在wordpress網站模闆中調用它。在給functions.php檔案添加菜單功能時,我們設定了2個菜機關置:頭部菜單和底部菜單。這裡,我們以頭部菜單為例,在wordpress網站模闆的頭部模闆header.php中添加如下代碼:
$menu = array( 'container' => false, //最外層标簽名 'theme_location' => 'menu_top', //菜單類名 'depth' => 0, //菜單深度 ); wp_nav_menu( $menu );
這樣,我們就可以在wordpress網站的前台頭部看到我們添加的導航菜單,如下圖:
有點難看,是吧,我們可以給這個菜單添加CSS樣式,來讓它好看一點,這裡就不示範了。上面的代碼中,我們用到了wordpress的一個函數——wp_nav_menu(),這個函數的功能,就是把背景建立好的菜單在前台列印出來。這個函數的參數跟wp_list_pages()和wp_list_categories()這2個函數的參數類似,可以是字元串類型,也可以是數組類型。
wp_nav_menu()函數的參數如下:
wp_nav_menu( array( 'theme_location' => '',//導航别名 'menu' => '', //期望顯示的菜單 'container' => 'div', //容器外層标簽 'container_class' => '',//ul父節點class類名 'container_id' => '', //ul父節點id名 'menu_class' => 'menu', //ul節點class類名 'menu_id' => '', //ul節點id名 'echo' => true,//是否輸出菜單,預設為真,true或1時,列印輸出;false或0時,不輸出。 'fallback_cb' => 'wp_page_menu', //菜單不存在時,傳回預設菜單,設為false則不傳回 'before' => '', //連結前文本 'after' => '', //連結後文本 'link_before' => '', //連結文本前 'link_after' => '',//連結文本後 'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>', //如何包裝清單 'depth' => 0, //菜單深度,預設0 'walker' => '' //自定義walker ) );
可見,wp_nav_menu()函數的參數還是挺多的,但實際使用中,不需要全部設定,往往我們隻需要使用其它的幾個正常參數就可以了,如上例中,我們就隻用了3個參數,就列印出了wordpress網站的頭部導航菜單。
通過以上這幾步,我們就為wordpress網站模闆添加好了自定義導航菜單的功能,看起來有點複雜,是吧。的确,跟wp_list_pages()和wp_list_categories()這2導航菜單相比,是要複雜一點。但是,多做幾次後,你會發現,這種自定義導航菜單使用起來更加靈活多變。不管怎樣,這3種添加導航菜單的方式我們都要掌握,可以在不同的需求中使用不同的方式。