wordpress函數wp_nav_menu()怎么用?
1、wp_nav_menu()函數介紹:
worpdress發展到3.0以后增加了一個自定義菜單函數wp_nav_menu(),使得WordPress能夠輕松的制作自己的導航菜單。
2、如何調用導航菜單(自定義菜單):
在需要調用導航菜單(或者稱之為自定義菜單)的地方插入來調用導航菜單,其中$args是函數的參數,后面會詳細說明。
推薦:《WordPress教程》
3、wp_nav_menu($args)函數中,參數$args的默認值:
代碼如下:
<?php $defaults = Array( ’theme_location’ =>?, ’menu’?=>?, ’container’?=>?’div’, ’container_class’?=>?’menu-{menu?slug}-container’, ’container_id’?=>?, ’menu_class’?=>?’menu’, ’menu_id’?=>?, ’echo’?=>?true, ’fallback_cb’?=>?’wp_page_menu’, ’before’?=>?, ’after’?=>?, ’link_before’?=>?, ’link_after’?=>?, ’items_wrap’?=>?’
- %3$s
’, ’depth’?=>?0, ’walker’?=>?); ?>
4、wp_nav_menu($args)函數中每個參數的具體含義:
$theme_locaton:(字符串)(可選)
默認值: None
用于在調用導航菜單時指定注冊過的某一個導航菜單名,如果沒有指定,則顯示第一個。
wp_nav_menu(array(? ? ‘theme_location’? ?=>’primary’)); //調用第一個菜單。
$menu:(字符串)(可選)
默認值: None
使用導航菜單的名稱調用菜單,可以是 id, slug, name (按順序匹配的) 。
$container:(字符串)(可選)
默認值: div
ul 父節點(這里指導航菜單的容器)的標簽類型,只支持div 和 nav 標簽, 如果是其它值, ul 父節點的標簽將不會被顯示。也可以用false(container => false)去掉ul父節點標簽。
$container_class:(字符串)(可選)
默認值: menu-{menu slug}-container
ul 父節點的 class 屬性值。
$container_id:(字符串)(可選)
默認值: None
ul 父節點的 id 屬性值。
$menu_class:(字符串)(可選)
默認值: menu
ul 節點的 class 屬性值。
$menu_id:(字符串)(可選)
默認值: menu slug, 自增長的
ul 節點的 id 屬性值。
$echo:(布爾型)(可選)
默認值: true (直接顯示)
確定直接顯示導航菜單還是返回 html 片段,如果想將導航的代碼作為賦值使用,可設置為false。
$fallback_cb:(字符串)(可選)
默認值: wp_page_menu (顯示頁面列表作為菜單)
用于沒有在后臺設置導航時調的回調函數。
$before:(字符串)(可選)
默認值: None
顯示在每個菜單鏈接前的文本。
$after:(字符串)(可選)
默認值: None
顯示在每個菜單鏈接后的文本。
$link_before:(字符串)(可選)
默認值: None
顯示在每個菜單鏈接文本前的文本。
$link_after:(字符串)(可選)
默認值: None
顯示在每個菜單鏈接文本后的文本。
$items_wrap:(字符串)(可選)
默認值: None
使用字符串替換修改ul的class。
$depth:(整型)(可選)
默認值: 0
顯示菜單的深度, 當數值為 0 時顯示所有深度的菜單。
$walker:(對象型)(可選)
默認值:? new Walker_Nav_Menu
自定義的遍歷對象,調用一個對象定義顯示導航菜單。
5、如何兼容舊版本的wordpress:
利用參數$fallback_cb來實現對舊版本的wordpress的兼容,將參數 ‘sort_column’=>’menu_order’ 寫入 wp_nav_menu 的參數, 那該參數同時也會傳遞到 call_user_func 方法中. 如果 call_user_func 是 wp_page_menu 方法, 那么顯示的頁面列表將會以賦予的序號排序輸出.
代碼如下:
if?(?(?!$menu?||?is_wp_error($menu)?||?(?isset($menu_items)?&&?empty($menu_items)?&&?!$args->theme_location?)?) &&?(?function_exists($args->fallback_cb)?||?is_callable(?$args->fallback_cb?)?)?) return?call_user_func(?$args->fallback_cb,?(array)?$args?);?<p>//?如果找不到指定菜單,?或者菜單不存在任何條目并沒有指定自定義菜單,?使用?call_user_func?方法來進行處理</p>