it-swarm.cn

如何使用wp_nav_menu()手动指定当前活动页面

有没有办法在使用wp_nav_menu()时手动指定哪个页面当前处于“活动状态”?

我有一个“产品”页面,在该页面上我有各种(动态)自定义分类法的链接。当我点击其中一个分类法时,我会留在“产品”页面上,但是wp_nav_menu()会失去对我仍在“产品”页面上的事实的参考。有没有办法解决这个问题?

谢谢!

乔恩

9
Jon

如果您只想将current_page_item类添加到一个菜单项,则可以连接到nav_menu_css_class过滤器,并在需要时添加该类。它被称为 打印菜单时

如果要访问整个菜单并添加类,请挂钩wp_get_nav_menu_items过滤器,在那里获得整个$items数组。您可以编辑各个项目的classes属性。

12
Jan Fabry

@Jon 只要您使用<body <?php body_class(); ?>>,如果使用下拉菜单,WordPress会将current_page_item类与current_page_parent一起分配给您的菜单。

2
Chris_O

Jan提到了nav_menu_css_class过滤器,所以我查了一下这个例子对我有帮助来源: https://codex.wordpress.org/Plugin_API/Filter_Reference/nav_menu_css_class

function my_special_nav_class( $classes, $item ) {
    if ( is_single() && $item->title == 'Blog' ) {
        $classes[] = 'special-class';
    }
    return $classes;
}    
add_filter( 'nav_menu_css_class', 'my_special_nav_class', 10, 2 );
0
Ross