WP_NAV_MENU-仅显示当前菜单项的子项?

时间:2012-10-17 作者:ragulka

我试图用一个简单的概念创建菜单结构:

水平、1级深主菜单是一个垂直子菜单,包含当前主菜单项(2级深)的子菜单。当然,在以下情况下应显示子菜单:

查看主菜单项查看主菜单项的直接子菜单项查看主菜单项的子菜单项(第三级)查看主菜单项的子菜单项(第三级)因为我想保持菜单的干净,所以我只需要显示当前活动的第二级菜单项的第三级菜单项。

基本上,我想实现与本主题中描述的相同的目标:How to show only parents subpages of current page item in vertical menu? - BUT, using wp_nav_menu()

如果有人能给我指出一个正确的方向,我很乐意使用过滤器或定制步行器。

这里需要注意的重要一点是,由于wp\\u nav\\u菜单还可以包含自定义链接或类别链接,因此解决方案应该适用于所有这些情况。

1 个回复
最合适的回答,由SO网友:Mridul Aggarwal 整理而成

不知道这是不是最好的方式,但我会这样做-

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中,您可以为上面的第二步创建自定义过滤器。这将使循环更加容易,因为项目已经排序

结束

相关推荐

Wordpress Custom Menus Issue

在我的模板中,我使用这样的调用来输出一些自定义菜单:<?php wp_nav_menu(array(\'container_class\' => \'secondary-navigation\', \'theme_location\' => \'secondary\')); ?> 自从升级到WordPress 3.1.4后,我就可以获得完整的页面列表,而不是自定义菜单我看到修复程序(通过谷歌)说我应该添加以下内容来修复此问题:\'fallback_cb\' => f