首页 > 解决方案 > 将“活动”类添加到 wordpress 中的当前后祖先菜单项父级

问题描述

我在wordpress中有这样的菜单

当我在子项(类别)页面中将“current-menu-parent”类添加到“父项”中时,这非常有用。但是当我查看来自子项(类别)的帖子之一时,没有特殊类被添加到“父项”中。只有“current-post-ancestor”类被添加到子项(类别)中。当我查看来自子项(类别) 的帖子时,如何将类添加到“父项” ?

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

标签: wordpresswp-nav-menu-item

解决方案


我找到了我自己问题的答案,这就是我要找的..

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;    
}

它将向当前后祖先菜单项父级添加一个类。


推荐阅读