显示菜单的一部分,其中包含用户当前正在查看的页面,并且仅显示其直接子页面

时间:2017-06-30 作者:Paweł Panysz

因此,这就是我徒劳地试图实现的目标-假设有如下菜单。。。

enter image description here

我想做的是生成一个菜单,其中只包含用户所在的当前页面的标题和链接,以及它的直接子项。例如,假设用户当前在示例页上-菜单应该如下所示。。。

enter image description here

如果用户当前正在查看Woo页面,则生成的菜单应包含指向Woo页面及其子项(购物、购物车、结帐、我的帐户)的链接。如果用户正在查看的页面没有其他页面上的子页面,则应仅显示指向用户当前所在页面的链接(本例中为其他页面)。

这样的事情有可能实现吗?如果是,我该怎么做?如有任何提示,我们将不胜感激,并提前向您表示感谢。

2 个回复
SO网友:ahendwh2

你必须加入wp_nav_menu_items 并在那里建立自己的菜单。有关使用此挂钩的小指南,请访问wpbeginner.

SO网友:LWS-Mo

您也可以尝试仅为此使用CSS。

WordPress菜单中的每个菜单项都有几个类。例如,如果菜单项当前处于活动状态,则其中一个类将是current-menu-item.

如果当前活动菜单项位于子菜单中,则父菜单项还将获得多个类,current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor.

所以你可以试试

  • display:none; 致所有人.sub-menu 元素,以便隐藏默认的所有子菜单,然后尝试仅在父菜单处于活动状态时显示子菜单,.current-menu-parent .sub-menu > display:block;
只要看看源代码中的所有不同类,也许您需要使用另一个类,而不是.current-menu-parent, 但你应该明白这一点。

结束

相关推荐

Walker Class:在子菜单后立即输出父描述和特色图像?

我到处找遍了,但似乎找不到这个具体案例的答案。我试图在子菜单开始后立即输出页面的父描述和特征图像。我有以下代码可以工作,但会迭代每个链接,这很混乱。我至少能够修改深度,使其只输出一次内容,但我想a)清理它,b)找到真正正确的方法来执行此操作。这是我现在的步行者:class Description_Walker extends Walker_Nav_Menu { function start_el(&$output, $item, $depth, $args) {