WordPress主题开发之自定义制作导航菜单的调用

老乐 基础文档2字数 1598阅读5分19秒阅读模式

我们在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。

投上你的一票
 
  • 本文由 老乐 发表于 2024年9月8日 09:13:42
  • 转载请务必保留本文链接:https://www.zhujipingjia.com/wpdev-nav.html