Wordpress wp_导航_菜单walker class子菜单仅显示在父页面上

Wordpress wp_导航_菜单walker class子菜单仅显示在父页面上,wordpress,navigation,Wordpress,Navigation,我已经搜索了一个自定义的“Walker”类,在您进入父页面之前,该类将从wp_nav_菜单中隐藏子菜单。我已经找到了很多方法来隐藏它们或者只是显示子菜单,但是当你在那个部分时,并没有一种方法只显示子菜单。下面是我需要它如何显示的示例: Wp_导航_菜单结构,当前状态: 父1 家长2 儿童1 儿童2 家长3 孩子A 孩子B -展示- 在家长1/主页上: 父1 家长2 家长3 在父2和父2子页面上: 父1 家长2 儿童1 儿童2 家长3 您不需要定制助行器,可以使用CSS类完成

我已经搜索了一个自定义的“Walker”类,在您进入父页面之前,该类将从wp_nav_菜单中隐藏子菜单。我已经找到了很多方法来隐藏它们或者只是显示子菜单,但是当你在那个部分时,并没有一种方法只显示子菜单。下面是我需要它如何显示的示例:

Wp_导航_菜单结构,当前状态:

  • 父1
  • 家长2
    • 儿童1
    • 儿童2
  • 家长3
    • 孩子A
    • 孩子B
-展示-

在家长1/主页上:

  • 父1
  • 家长2
  • 家长3
在父2和父2子页面上:

  • 父1
  • 家长2
    • 儿童1
    • 儿童2
  • 家长3

您不需要定制助行器,可以使用CSS类完成,并显示:无

e、 g.你可以从以下几点开始:

.menu .sub-menu { display: none; }
.menu .current-menu-item .sub-menu { display:block; }
.menu .current-menu-ancestor .sub-menu { display:block; }

通过一些附加规则,基于应用于body标记的类,您可以使用通过后端添加到菜单项的类有条件地显示和隐藏其他菜单项。

您不需要自定义walker来执行此操作,可以使用CSS类来完成,并显示:无

e、 g.你可以从以下几点开始:

.menu .sub-menu { display: none; }
.menu .current-menu-item .sub-menu { display:block; }
.menu .current-menu-ancestor .sub-menu { display:block; }

通过一些附加规则,基于应用于body标记的类,您可以使用通过后端添加到菜单项的类有条件地显示和隐藏其他菜单项。

以上答案是正确的-您可以使用css来执行此操作,但从技术上讲,菜单仍然“存在”。如果你想完全消除,你可以使用我写的插件


请评分,并确认它的工作-我刚刚发布了几天前。我已经在几个网站上使用过它。我的第一个插件:)

上面的答案是正确的-你可以用css实现这一点,但从技术上讲,菜单仍然“在那里”。如果你想完全消除,你可以使用我写的插件


请评分,并确认它的工作-我刚刚发布了几天前。我已经在几个网站上使用过它。我的第一个插件:)

在我看来,使用CSS来“隐藏”不需要的菜单级别充其量是麻烦的,最糟糕的是有点“黑客”。就我个人而言,我从不喜欢在页面上输出任何不应该存在的内容(无论如何都可以避免)

Wordpress目前没有为我们提供任何帮助,因为他们没有提供内置在wp_nav_菜单中的选项来限制菜单的起始深度

我尝试过不同的Walker、Widget和插件来解决这个问题,但我从来没有对我尝试过的解决方案感到非常满意。例如,上面插件中的解决方案要求您传递所需子菜单的ID

我已经编写了自己的插件,它扩展了wp_nav_菜单,添加了一个“开始深度”选项。这会自动在任何子页面上工作,而无需指定任何内容

安装插件后,只需使用如下代码:

wp_nav_plus(array('theme_location' => 'primary_navigation', 'start_depth' => 1));

对任何感兴趣的人都可以在我的网站上找到它:

在我看来,使用CSS来“隐藏”不需要的菜单级别充其量是很麻烦的,最糟糕的是有点“黑客”。就我个人而言,我从不喜欢在页面上输出任何不应该存在的内容(无论如何都可以避免)

Wordpress目前没有为我们提供任何帮助,因为他们没有提供内置在wp_nav_菜单中的选项来限制菜单的起始深度

我尝试过不同的Walker、Widget和插件来解决这个问题,但我从来没有对我尝试过的解决方案感到非常满意。例如,上面插件中的解决方案要求您传递所需子菜单的ID

我已经编写了自己的插件,它扩展了wp_nav_菜单,添加了一个“开始深度”选项。这会自动在任何子页面上工作,而无需指定任何内容

安装插件后,只需使用如下代码:

wp_nav_plus(array('theme_location' => 'primary_navigation', 'start_depth' => 1));

对任何感兴趣的人都可以在我的网站上找到它:

非常感谢-我真的看不见树木的树木。非常感谢-我真的看不到树木的树木与此。你可能会在wordpress.stackexchange.com上得到更好的答案,您想让我们为您迁移此插件吗?您可能会在wordpress.stackexchange.com上得到更好的答案,您想让我们为您迁移此插件吗?插件非常棒!如果它能找出它在菜单树中的位置就好了——现在你可以通过$post->post\u parent来获得正确的子菜单,但这会有问题:如果页面的结构与菜单的结构不同,则会显示错误的子菜单。不过,有用的开始,所以谢谢!插件工作得很好!如果它能找出它在菜单树中的位置就好了——现在你可以通过$post->post\u parent来获得正确的子菜单,但这会有问题:如果页面的结构与菜单的结构不同,则会显示错误的子菜单。不过,有用的开始,所以谢谢!