如何突出显示菜单中未显示的子页的所有祖先菜单项

时间:2015-02-09 作者:amyQ

情况如下:在我的主导航菜单中,我有如下内容:

与我一起工作最新项目,其中最新项目页面是子页面,与我一起工作页面的子菜单项和都显示在主导航中。

但是,我有多个项目页面,它们是最新项目的唯一子页面。我决定不将它们作为子菜单项显示在菜单中,因为列表太长了。

因此,我希望看到的是,当查看器位于其中一个项目页面上时,最新的项目和“与我一起工作”菜单项都处于活动状态(突出显示)。

我发现这段代码要添加到我的函数中。php文件。它可以工作,但只突出显示“最新项目”菜单项(而不是“与我一起工作”项)。

<?php //in functions.php
add_filter(\'nav_menu_css_class\', \'highlight_portfolio\', 12, 2);
function highlight_portfolio($classes, $item) {
    $parent = get_post_ancestors();
    $parent_ID = $parent[0];
    if ($parent_ID == $item->object_id) {
        array_push($classes, \'current-menu-ancestor\');
    }
    return $classes;
}
如何修改此代码以包含所有祖先菜单项?TIA!

1 个回复
SO网友:Privateer

您只检查一个父项。

相反,你可以对照所有的父母

<?php //in functions.php
add_filter(\'nav_menu_css_class\', \'highlight_portfolio\', 12, 2);
function highlight_portfolio($classes, $item) {
    $parents = get_post_ancestors();
    if ( 0 < count($parents) ) {
        if ( in_array( $item->object_id, $parents ) {
            array_push( $classes, \'current-menu-ancestor\' );
        }
    }
    return $classes;
}
代码中的注意事项

$parent_ID = $parent[0];
仅获取返回列表中的第一个父id。使用in\\u数组检查它是否与任何祖先匹配。

结束

相关推荐

Custom Menus and taxonomies

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