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


9

使用时,是否可以手动指定哪个页面处于“活动”状态wp_nav_menu()

我有一个“产品”页面,在该页面上,我具有各种(动态)自定义分类法的链接。当我单击这些分类中的一种时,我停留在“产品”页面上,但wp_nav_menu()忘记了我仍在“产品”页面上的事实。有办法解决这个问题吗?

谢谢!

乔恩

Answers:


12

如果仅要将current_page_item类添加到一个菜单项,则可以连接到nav_menu_css_class过滤器,并在需要时添加该类。菜单打印时调用。

如果要访问整个菜单并添加类,请连接到wp_get_nav_menu_items过滤器,以获取整个$items数组。您可以编辑classes单个项目的属性。


2

@Jon, 只要您使用的是<body <?php body_class(); ?>>WordPress,就会将类别分配current_page_item给您的菜单,以及current_page_parent使用下拉菜单的情况。


1
克里斯,您好,感谢您的答复。我正在使用<body <?php body_class(); ?>>标记,但是问题在于,就wp_nav_menu()而言,单击的分类法与此无关!因此,我需要对wp_nav_menu()说-如果页面是X,则将“产品”显示为current_page_parent。
乔恩

0

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 );
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.