【问题标题】:Get all submenu items and container WordPress获取所有子菜单项和容器 WordPress
【发布时间】:2020-02-25 22:48:55
【问题描述】:

我在 WordPress 中有以下菜单结构:

  • 父 1
    • 子菜单 1
    • 子菜单 2
    • 子菜单 3
  • 父 2
    • 子菜单 4
    • 子菜单 5
  • 父 3
    • 子菜单 6

我正在使用 WordPress wp_nav_menu_objects 过滤器来检索所有子菜单项。我必须使用下面的代码:

add_filter( 'wp_nav_menu_objects', 'my_wp_nav_menu_objects_sub_menu', 10, 2 );

// filter_hook function to react on sub_menu flag
function my_wp_nav_menu_objects_sub_menu( $sorted_menu_items, $args ) {


  if ( isset( $args->sub_menu ) ) {

    foreach ( $sorted_menu_items as $key => $item ) {

      if ( $item->menu_item_parent == '0' ) { // only get sub-menu items
        unset( $sorted_menu_items[$key] );
      }

    }

    return $sorted_menu_items;

  } else {
    return $sorted_menu_items;
  }
}

也显示导航:

wp_nav_menu( array(
    'theme_location' => 'main-menu',
    'menu_id' => 'sub-menus',
    'menu_class'=>'menu',
    'container'=>'ul',
    'sub_menu' => true,
) );

生成 HTML:

<ul>
  <li>Submenu 1</li>
  <li>Submenu 2</li>
  <li>Submenu 3</li>
  <li>Submenu 4</li>
  <li>Submenu 5</li>
  <li>Submenu 6</li>
</ul>

理想情况下,我希望每个子菜单“组”都位于其自己的 &lt;ul&gt; 容器中,但我似乎无法弄清楚如何做到这一点。下面是首选结果的一个示例。

<ul>
  <ul>
    <li>Submenu 1</li>
    <li>Submenu 2</li>
    <li>Submenu 3</li>
  </ul>
  <ul>
    <li>Submenu 4</li>
    <li>Submenu 5</li>
  </ul>
  <ul>
    <li>Submenu 6</li>
  </ul>
</ul>

任何有关如何解决此问题的建议将不胜感激!

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    您不能插入 html,因为 Wordpress 会处理结果。但是,您可以在 for 循环中插入一些代码来创建一个仅包含 html 的数组。然后可以将每个条目的文本和链接传递给您想要处理它的任何代码。

    因此,您可以用代码替换循环中的 unspec 语句,以仅使用 html 构建一个数组,如您所需输出的示例所示。您还可以创建一个新参数来处理这个新数组。

    【讨论】:

    • 如果我理解您的回答,您希望我在 for 循环中传递 HTML,但是过滤器 'wp_nav_menu_objects' 返回一个对象。所以我不认为在这个过滤器中使用 HTML 是可能的。
    【解决方案2】:

    您可以向传递给过滤器的 $args 添加另一个参数。在这种情况下,它将是一个包含 html 的数组。您在当前代码中使用 $args -> sub_menu 执行此操作,并使用 isset 语句引用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      相关资源
      最近更新 更多