当子页面本身不在菜单中时,我想在菜单中突出显示子页面的父页面。
我知道如果您将子页面添加为子页面,这将起作用,但事实并非如此。
有什么想法吗?
当子页面本身不在菜单中时,我想在菜单中突出显示子页面的父页面。
我知道如果您将子页面添加为子页面,这将起作用,但事实并非如此。
有什么想法吗?
Alrdy got it:
<?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;
}
janw给出的公认答案非常接近,但是get_post_anscestors()
根据WordPress文档,实际上需要一个WP Post或其ID作为参数:
https://developer.wordpress.org/reference/functions/get_post_ancestors/
我这样实施,效果很好:function highlight_portfolio($classes, $item) {
$parent = get_post_ancestors($item);
$parent_ID = $parent[0];
if ($parent_ID == $item->object_id) {
array_push($classes, \'current-menu-ancestor\');
}
return $classes;
}
add_filter(\'nav_menu_css_class\', \'highlight_portfolio\', 12, 2);
我只想把这作为一个评论,但还没有声誉,所以把它作为一个答案。作为@janw答案的替代方法,您可以在主题的页脚中插入以下代码。php文件位于结束正文标记之前。
<!-- Highlight parent page link when on child page -->
<?php if (is_page()) { // displaying a child page ?>
<script type="text/javascript">
jQuery("li.current-page-ancestor").addClass(\'current-menu-item\');
</script>
<?php } ?>
我在这里的帖子中详细介绍了此代码的工作原理:How to keep parent page navigation link highlighted when viewing a child/sub page!我正在使用菜单API,我想切换到其他菜单,但出于某种原因,它保留了第一个菜单这是我的密码在函数中。php add_action( \'init\', \'register_my_menus\',10 ); function register_my_menus() { register_nav_menu(\'main-navigation\', \'Main Navigation\'); } 下面是我的主题文件(header.ph