我在WordPress里有这样的菜单
当我在子项(类别)页面时,“当前菜单父项”类被添加到“父项”中,这是非常有用的。但是,当我从子项(类别)查看一篇文章时,“父项”中没有添加特殊类。子项(类别)中只添加了“当前后期祖先”类。当我从子项(类别)查看帖子时,如何将类添加到“父项”?
注意:我想要一个PHP解决方案,不接受Javascript/Jquery解决方案。
更新:
这是我到目前为止所拥有的。但它是添加类到所有的父项目有子。
add_filter( 'wp_nav_menu_objects', 'add_menu_parent_class' );
function add_menu_parent_class( $items ) {
$parents = array();
foreach ( $items as $item ) {
if ( $item->menu_item_parent && $item->current_item_ancestor) {
$parents[] = $item->menu_item_parent;
}
}
foreach ( $items as $item ) {
if ( in_array( $item->ID, $parents ) ) {
$item->classes[] = 'active';
}
}
return $items;
}
我已经找到了我自己问题的答案,这就是我一直在寻找的。。
add_filter( 'wp_nav_menu_objects', 'add_menu_parent_class' );
function add_menu_parent_class( $items ) {
$parents = array();
foreach ( $items as $item ) {
if ( in_array('current-post-ancestor', $item->classes) ) {
$parents[] = $item->menu_item_parent;
}
}
foreach ( $items as $item ) {
if ( in_array( $item->ID, $parents ) ) {
$item->classes[] = 'current-menu-ancestor';
}
}
return $items;
}
它会将一个类添加到当前的post祖先菜单项parent中。