我们在WordPress主题开发中导航菜单的调用设计也是很重要的。如果我们自用主题的话,导航人工写到模板里那也没有问题,如果是公开的主题你得设计可以自动的调用。这里我们简单的整理 WordPress 主题开发的时候自定义导航菜单的调用。
正常情况下,我们需要在后端菜单创建指定位置的菜单,比如顶部或者底部,或者主导航。
// 申明菜单
if(function_exists('register_nav_menu')){
register_nav_menu('mainmenu','主导航');
}
if (!is_nav_menu('主导航')){
$menu_id_1 = wp_create_nav_menu('主导航');
wp_update_nav_menu_item($menu_id_1, 0);
}
这里我们在申明菜单后,可以在后端中看到主菜单,具体的名字可以自定义。

如果在前端直接调用的话,可以这样子。
<?php wp_nav_menu('theme_location=mainmenu'); ?>
当然,我们不能这样,还没有加载自己的前端样式。
<?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' => '<ul id=\"%1$s\" class=\"%2$s\">%3$s</ul>',
'depth' => 0,
'walker' => );
?>
<?php wp_nav_menu( $defaults ); ?>
默认的函数是这样子的,具体的参数需要设置到我们的前端样式中。比如我正在开发的一款主题我这样设置的。
<?php $defaults = array( 'theme_location' => 'mainmenu', 'container' => 'div', 'container_class' => 'collapse navbar-collapse navbar-right', 'container_id' => 'navigation', 'menu_class' => 'nav navbar-nav', 'fallback_cb' => 'wp_page_menu', 'link_before' => '', 'link_after' => '', 'items_wrap' => '<ul class="%2$s">%3$s</ul>', 'depth' => 2, ); ?> <?php wp_nav_menu( $defaults ); ?>
这里还有一个小功能需要设置的,比如我们在当前的菜单下会高亮的,这里我们需要提前设置一个active样式,然后我们需要用定义函数设置。
/*
* 给激活的导航菜单添加 .active
*/
function spring_nav_menu_css_class( $classes ) {
if ( in_array('current-menu-item', $classes ) OR in_array( 'current-menu-ancestor', $classes ) )
$classes[] = 'active';
return $classes;
}
add_filter( 'nav_menu_css_class', 'spring_nav_menu_css_class' );
对应的"spring_"是我们自己的主题名称。会自动给当前的菜单添加的active样式,我们只需要提前加一个active样式CSS。


评论