下面是一个适用于自定义帖子类型"公文包"的过滤器。。它从"博客"菜单中删除了活动类,并突出显示了ID为123的菜单,效果非常好。。它突出显示了我的ID为123的菜单,即"Portfolio",但它只适用于本地主导航,我的意思是我有两个不同的菜单,一个是用自定义Walker_Nav_menu制作的,它不适用于此。。。
因此,如果我将这个"walker"=>new my_walker()添加到我的代码中,它不会应用以下过滤器,但在其他方面它可以完美工作。。有人能告诉我如何同时将其应用于自定义助行器类吗?。。谢谢
function remove_parent_classes($class)
{
// check for current page classes, return false if they exist.
return ($class == 'current_page_item' || $class == 'current_page_parent' || $class == 'current_page_ancestor' || $class == 'current-menu-item') ? FALSE : TRUE;
}
function add_class_to_wp_nav_menu($classes)
{
switch (get_post_type())
{
case 'portfolio':
// we're viewing a custom post type, so remove the 'current_page_xxx and current-menu-item' from all menu items.
$classes = array_filter($classes, "remove_parent_classes");
// add the current page class to a specific menu item (replace ###).
if (in_array('menu-item-123', $classes))
{
$classes[] = 'current_page_parent';
}
break;
// add more cases if necessary and/or a default
}
return $classes;
}
add_filter('nav_menu_css_class', 'add_class_to_wp_nav_menu');
尝试添加$item
参数:
function add_class_to_wp_nav_menu($classes, $item)
{
switch (get_post_type($item->ID))
{
case 'portfolio':
$classes = array_filter($classes, "remove_parent_classes");
if (123 == $item->ID)
{
$classes[] = 'current_page_parent';
}
break;
}
return $classes;
}
add_filter('nav_menu_css_class', 'add_class_to_wp_nav_menu', 10, 2);