突出显示当前发布的祖先父菜单项

时间:2018-07-04 作者:GDY

WordPress中的默认菜单类非常有用。但我不时遇到的一个问题是,菜单中的子项是类别。例如,以下菜单结构:

第1页第2页第1类Category 1 处于活动状态Page 2 获取.current-menu-ancestor 这很好……但一旦Category 1 已查看Page 2 没有特定的类…但是Category 1.current-menu-ancestor 正如所料。

So finally here\'s the question: How do i assign a class for these .current-post-ancestor parents?

我正在搜索PHP解决方案。Javascript/jQuery非常清楚……这里有一个jQuery解决方案,可以更好地理解我想要做什么(对于那些有同样问题并且对JS解决方案感到满意的人):

jQuery( \'li.current-post-ancestor\' ).parents( \'li.menu-item\' ).addClass( \'current-menu-ancestor\' );

3 个回复
SO网友:Raitul Islam

这可能就是你要找的。。

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;    
}
它将向current post ancestor 菜单项父项。我在我的主题中尝试过这一点,而且效果很好。

SO网友:mcgoo

你可以使用https://codex.wordpress.org/Class_Reference/Walker, 如果您想检测活动的父级,可以使用。

if ( in_array( \'current-menu-ancestor\', $classes) ) {
    $class_names .= \' is-active\';
}

SO网友:Sohel Khan

您可以简单地使用当前活动的类及其父类来添加类。

jQuery( \'li.menu-item.active\' ).parents().addClass( \'current-menu-ancestor\' );

结束

相关推荐

Custom Menus and taxonomies

好的,我刚开始使用WordPress,不是很好,我有一个菜单问题,我真的需要一些帮助。我在一个网站上工作,它有多个地点,并非所有地点都销售相同的产品。所有位置都是具有父结构的页面。俄亥俄州-联系我们-关于我们-产品等。。。西弗吉尼亚州-联系我们-关于我们-产品等。。。宾夕法尼亚州-联系我们-关于我们-产品等我掌握了自定义页面模板的窍门,并为其添加了自定义菜单(因此,我所有的Ohio页面都使用了我制作的自定义Ohio模板,并包含了自定义Ohio菜单)。我正在使用帖子创建产品信息页面,并使用以下方式显示它们: