我试图获得3级顶级主菜单,其中不应该看到特定父页面的子菜单(子页面)。我应该是这样的:
我试过child_of
- 但没有运气。
谢谢, oxEgen
答案 0 :(得分:0)
根据我们的评论对话,依赖菜单元素上id / class属性中任意生成的数字并不健全。但如果你能控制如何归因你的菜单项,那么你就可以可靠地控制它们的风格。
我认为处理自定义菜单的最佳做法是创建一个“nav walker”,它允许您控制向HTML发出哪些项目(以及 它们是如何发出的)。这将使您可以选择不渲染您想要避免的特定菜单项,或者使用id / class hooks渲染它们,以便对它们进行样式化。
This wp_nav_menu()
tute介绍了设置自定义wp_nav_menu()
的过程,重要的是需要添加自定义Walker_Nav_Menu
类。这在this Understanding the Walker class tute中有详细描述。
根据父项的页面标题,我已经破解了一种非常基本的方法来执行您需要的操作。这基本上“欺骗”Walker_Nav_Menu
,认为它已超出其允许的遍历深度,因此在遇到忽略的菜单节点的情况下不遵循该树分支。将其添加到您的functions.php
文件中:
class Selective_Walker extends Walker_Nav_Menu {
function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output ) {
if (in_array($element->title, array("Product 3"))) // Add any additional items as req'd to this array
$depth = $max_depth + 1;
parent::display_element( $element, &$children_elements, $max_depth, $depth, $args, &$output );
}
}
然后,无论您的主题添加导航菜单(可能是header.php
),您都需要将walker
参数添加到wp_nav_menu()
调用(除了您提供的任何其他参数)已经使用了),传递给你一个新的助行者类的实例:
<?php wp_nav_menu( array('walker' => new Selective_Walker(), 'theme_location' => 'primary', 'depth' => 3 ) ); ?>
答案 1 :(得分:-1)
如果您有PHP知识,您可以根据自己的要求自定义wordpress菜单。我有一个功能,可以以数组格式提供父菜单及其子菜单,您可以自定义您的wordpress菜单,达到您想要的任何级别。 这是solution