4

我尝试了许多功能(wp_list_pages、get_pages、wp_nav_menu)和几个功能超过 2 小时,但无法解决这个问题。

我创建了三层深度的页面:

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 来说,它不应该那么复杂,但我认为我将可能的解决方案过于复杂化了。您对实现这一目标的可能方法有什么建议吗?

谢谢。

4

2 回答 2

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
    }
}
于 2012-12-21T19:05:24.280 回答
0

如果您使用的是 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>

最后一步是转到外观>菜单并创建 3 个菜单,命名它们并从管理菜单设置中选择将与它们一起使用的页面。

于 2012-12-21T19:21:18.300 回答