WordPress导航菜单,可以把需要的页面(首页,分类,页面)添加到导航中,非常灵活。有了它,就不再需要?wp_list_categories?函数。因为使用它需要哪些分类,不需要哪些分类,分类的排序,仅仅需要在后台动动鼠标即可,根本不需要去动用模板。
基本用法
<?php?wp_nav_menu(?$args?);??>
默认参数
<?php$defaults = array(
"theme_location" => "",
"menu" => "",
"container" => "div",
"container_class" => "",
"container_id" => "",
"menu_class" => "menu",
"menu_id" => "",
"echo" => true,
"fallback_cb" => "wp_page_menu",
"before" => "",
"after" => "",
"link_before" => "",
"link_after" => "",
"items_wrap" => "<ul id="%1$s">%3$s</ul>",
"depth" => 0,
"walker" => ""
);wp_nav_menu( $defaults );?>
参数说明
$theme_location
(string) (optional)在主题中使用的位置,为了用户选择必须用??register_nav_menu() 函数注册
Default: None
$menu
(string) (optional)按需要,指定ID、别名、名称的菜单
Default: None
$container
(string) (optional)项目列表ul的父元素,不想使用可以用?’container’ => false
Default: div
$container_class
(string) (optional) 外围元素,即项目列表ul的父元素的类别名称
Default: menu-{menu slug}-container
$container_id
(string) (optional) 外围元素的ID
Default: None
$menu_class
(string) (optional)项目列表ul的类别名称。
Default: menu
$menu_id
(string) (optional)项目列表ul的ID名称。
Default: menu-{menu slug}; when there are duplicates, the next values are menu-{menu slug}-1, menu-{menu slug}-2, etc.
$echo
(boolean) (optional) 是否输出菜单或返回它,返回菜单值为0
Default: true
$fallback_cb
(string) (optional) 如果菜单不存在,则会使用fallback函数。设置为假,没有返回。注意:通过自定义函数的参数。
Default: wp_page_menu
$before
(string) (optional) 在a标签之前输出的文本
Default: None
$after
(string) (optional)?在a标签之后输出的文本
Default: None
$link_before
(string) (optional) 在a标签里面的文字前面输出的文本
Default: None
$link_after
(string) (optional)?在a标签里面的文字后面输出的文本
Default: None
$items_wrap
(string) (optional)格式字符串参数的一个sprintf()表达式。格式字符串包含了其他的参数编号标记。%1$s扩展到了参数menu_id的值;%2$s扩展到了参数menu_class的值;%3$s则扩展到列表项的值。如果一个编号的令牌省略了格式字符串,相关的参数也会被省略。
Default:%3$s
$depth
(integer) (optional)多少个级别的层次,0显示所有,-1在一个单一的平面列表显示任何层次的链接
Default: 0
$walker
(object) (optional)自定义walker对象,(注意:你必须通过一个实际的对象来使用,而不是一个字符串)
Default: new Walker_Nav_Menu
详细用法
要使用 WordPress 导航菜单功能,首先要给当前的主题注册导航菜单,从上面我们知道,我们可以注册一个或者多个导航菜单的主题位置,我么可以使用下面两个函数:
- register_nav_menu():注册一个主题位置。
- register_nav_menus():注册多个主题位置(使用数组形式)。
注册主题位置
这里我们只注册一个导航菜单的主题位置,在functions.php文件中加入以下代码
/*注册导航菜单*/
register_nav_menu( "nav-menu", "导航菜单");
nav-menu 是这个导航菜单的名字,用来在函数中定义身份的,而“导航菜单”则是名称,在 WordPress 后台使用的时候可见。
进入wordpress后台,“外观——菜单”,之后就可以用鼠标创建导航菜单了,创建完毕记得保存,OK
前台调用
<?php wp_nav_menu(array( "theme_location"=>"nav-menu","container" => "","items_wrap" => "<ul>%3$s</ul>")); ?>
主题位置为 nav-menu(在functions.php文件中用register_nav_menu() 函数注册的名字)
ul外面不用父元素,ul元素不带任何参数。
不过即使如此,每个li项后还是有很多参数,可以用 add_filter 来过滤 。以下是我整理好的,仅作参考
function replace_nav($content){
$patterns[0] = "/ id="menu-item-\d+"/";
$patterns[1] = "/ class="menu-item menu-item-type-[^\s]+ menu-item-object-[^\s]+( menu-item-home)? menu-item-\d+"/";
$ct[0]="/menu-item menu-item-type-[^\s]+ menu-item-object-[^\s]+ current[^"]+/";
$content = preg_replace($patterns, "", $content);
$content = preg_replace($ct,"current", $content);
return ($content);
}
add_filter("wp_nav_menu","replace_nav");
噢!评论已关闭。