不知道这是不是最好的方式,但我会这样做-
1) 钩入wp_nav_menu_objects
滤器该函数将接收所有菜单项的列表。这些菜单项已经包含有关当前页面或当前页面的祖先的信息(执行var_dump
一次)
2) 从这些菜单项中,取消设置所有不应显示的菜单项(&N);归还其余部分
foreach(<loop all items>) {
if(<this item\'s parent is current page or it\'s ancestor>)
// this element should be displayed
else
// this element should be deleted, unset() it
}
3)覆盖
walk
和/或
display_element
方法中,默认情况下,子对象添加到父对象的
<li>
标记,但根据我对HTML的理解,您需要将它们分开
或者,如果您已经覆盖walk
方法,但将其大部分代码保留在自定义walker中,您可以为上面的第二步创建自定义过滤器。这将使循环更加容易,因为项目已经排序