仅显示wp_NAV_MENU,其中包含当前菜单项

时间:2012-12-03 作者:hardysim

我在仅显示带有wp\\U nav\\U菜单的菜单时遇到问题,当前菜单项位于该菜单中。

我得到的是:

function register_menus() {
  register_nav_menus(
    array(
      \'sidebar-menu\' => __(\'Sidebar Menu\'),
      \'first-menu\' => __(\'Menu 1\'),
      \'second-menu\' => __(\'Menu 2\'),
      \'third-menu\' => __(\'Menu 3\')
    )
  );
}
add_action(\'init\', \'register_menus\')
和在页面上。php我正在做

<?php wp_nav_menu(array(\'theme_location\' => \'first-menu\')); ?>
<?php wp_nav_menu(array(\'theme_location\' => \'second-menu\')); ?>
<?php wp_nav_menu(array(\'theme_location\' => \'third-menu\')); ?>
当我现在打开菜单2中的一个页面时,我可以用来设置它的样式。当前菜单项-因此这里没有问题。

但我只想显示一个菜单,其中包含。其中的当前菜单项(菜单2)。其他菜单(菜单1、菜单3)应显示:无

有没有办法做到这一点?我想到了一个walker、一个filter或一个简单的if语句,它检查菜单,菜单中有。当前菜单项,但我自己无法处理:-(

非常感谢你

1 个回复
SO网友:kaiser

只需拦截导航类并搜索current-menu-item 班这将为您提供$item 它与关联。

add_filter( \'nav_menu_css_class\', \'get_active_class\', 10, 2 );
function get_active_class( $classes, $item )
{
    if ( in_array( \'current-menu-item\', $classes) ) {
        // We found the active class!: $item
    }

    return $classes;
}
现在只需抓取导航菜单并应用所需的css类或style="display:none" 给其他人。

结束

相关推荐

Custom menus not showing

作为我上一次关于菜单的未解决查询的后续,这个问题已经进一步扩展。我的菜单没有打印代码中的任何地方。我正在注册菜单功能。php:add_action( \'after_setup_theme\', \'your_newtheme_setup\' ); if ( ! function_exists( \'your_newtheme_setup\' ) ) : function your_newtheme_setup() { if (