以下是适用于自定义帖子类型的过滤器"投资组合" ...它从" Blog"菜单,并突出显示ID为123的菜单,它完美地工作..它突出我的菜单ID 123,"投资组合",但它只适用于本机主导航,我的意思是我有2个不同的菜单一是使用自定义Walker_Nav_Menu制作的,它不适用于...
所以,如果我添加这个' walker' =>新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');
答案 0 :(得分:1)
尝试添加$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);