提问者:小点点

添加"活动"类到当前后祖先菜单项父在wordpress


我在WordPress里有这样的菜单

  • 父项目(A页)
    • 儿童项目(A类)

    当我在子项(类别)页面时,“当前菜单父项”类被添加到“父项”中,这是非常有用的。但是,当我从子项(类别)查看一篇文章时,“父项”中没有添加特殊类。子项(类别)中只添加了“当前后期祖先”类。当我从子项(类别)查看帖子时,如何将类添加到“父项”?

    注意:我想要一个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;
    }
    

共1个答案

匿名用户

我已经找到了我自己问题的答案,这就是我一直在寻找的。。

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中。