【问题标题】:How do I get second level menu in Wordpress?如何在 Wordpress 中获得二级菜单?
【发布时间】:2012-12-21 18:24:50
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: wordpress menu content-management-system


    【解决方案1】:

    首先你必须定义菜单项和页面之间的一致性。我不能根据你的问题来定义这个。如果您有两个 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
        }
    }
    

    【讨论】:

      【解决方案2】:

      如果您使用的是 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 个菜单,命名它们并从管理菜单设置中选择将与它们一起使用的页面。

      【讨论】:

      • 我已经这样做了,但它没有给我需要的东西。子菜单根据激活的父菜单而变化。所以在我的例子中,只有顶级菜单是静态的,可以从外观->菜单中定义。二级和三级菜单,根据我们当前所在的页面/菜单而变化..
      • 您不应该有子菜单,除非您手动将它们放置在自定义菜单中。如果您要求每个子菜单都有自己的子菜单,您可能需要考虑使用我布置的相同菜单系统,但使用内置类别来嵌套您的页面。我确定你想要什么是可能的,我只是不确定你到底想要什么?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-23
      相关资源
      最近更新 更多