在Wordpress中将“活动”类添加到当前后祖菜单项parent

时间:2018-10-16 07:10:06

标签: wordpress wp-nav-menu-item

我在wordpress中有一个这样的菜单

  • 父项(A页)
    • 子项(A类)

当我进入子项(类别)页面时,“当前菜单项-父项” 类将添加到“父项” 中>,这非常有用。但是,当我从 Child Item (类别)查看其中一篇帖子时,没有将特殊类添加到“父项” 中。仅“当前祖先” 类添加到子项(类别)。当我查看子项(类别)中的帖子时,如何向“父项” 中添加类?

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

答案 0 :(得分:0)

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

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

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