我超过2个小时尝试了很多功能(wp_list_pages,get_pages,wp_nav_menu)和几个功能,但无法解决这个问题。
我创建了三层深度的页面:
PAGE level1
SUBPAGE level2
SUBPAGE level3
我需要为每个菜单显示一个单独的菜单,如:
MENU1 (all top-level pages)
MENU2 (all sub-pages of CURRENT top level page)
MENU3 (all sub pages of current item from MENU2)
对于像Wordpress这样的CMS来说应该不会那么复杂,但我认为我的解决方案过于复杂。 你对可能的方法有什么建议吗?
感谢。
答案 0 :(得分:2)
首先,您必须定义菜单项和页面之间的一致性。我不能从你的问题中定义这个依据。如果您有两个level2子页面和两个menu2项目怎么办?哪个菜单项属于哪个子页面?
然后这个过程是微不足道的。您可以获取所有菜单项
$menu_items = wp_get_nav_menu_items($cur_menu, array());
并检查menu_item_parent
字段以查找已找到的父项
foreach ($menu_items as $item) {
if ($item->menu_item_parent === $parent_id) {
//this is child of $parent_id
}
}
答案 1 :(得分:1)
如果您使用的是WordPress函数register_nav_menus()
,那应该相当简单。
在你的functions.php文件中,你需要注册3个单独的菜单,如下所示:
<?php
add_action( 'init', 'register_my_menus' );
function register_my_menus() {
register_nav_menus(
array( 'first' => 'first', 'second' => 'second', 'third' => 'third', )
);
}
?>
现在已经注册了菜单,您只需要将它们放在主题文件中的位置,如下所示:
第一个菜单(可能在header.php文件中)
<div id="menu">
<?php wp_nav_menu( array( 'theme_location' => 'first' ) ); ?>
</div>
第二个菜单(可能在sidebar.php文件中)
<div id="menu">
<?php wp_nav_menu( array( 'theme_location' => 'second' ) ); ?>
</div>
第三个菜单(可能在footer.php文件中)
<div id="menu">
<?php wp_nav_menu( array( 'theme_location' => 'third' ) ); ?>
</div>
最后一步是转到外观&gt;菜单并创建3菜单,命名它们,然后从管理菜单设置中选择将与它们一起使用的页面。