情况如下:在我的主导航菜单中,我有如下内容:
与我一起工作最新项目,其中最新项目页面是子页面,与我一起工作页面的子菜单项和都显示在主导航中。
但是,我有多个项目页面,它们是最新项目的唯一子页面。我决定不将它们作为子菜单项显示在菜单中,因为列表太长了。
因此,我希望看到的是,当查看器位于其中一个项目页面上时,最新的项目和“与我一起工作”菜单项都处于活动状态(突出显示)。
我发现这段代码要添加到我的函数中。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!
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数组检查它是否与任何祖先匹配。