Php 获取所有子菜单项和容器WordPress
我在WordPress中有以下菜单结构:Php 获取所有子菜单项和容器WordPress,php,wordpress,Php,Wordpress,我在WordPress中有以下菜单结构: 父1 子菜单1 子菜单2 子菜单3 家长2 子菜单4 子菜单5 家长3 子菜单6 我正在使用WordPresswp\u nav\u menu\u objects过滤器检索所有子菜单项。我必须使用下面的代码: add_filter( 'wp_nav_menu_objects', 'my_wp_nav_menu_objects_sub_menu', 10, 2 ); // filter_hook function to react on s
- 父1
- 子菜单1
- 子菜单2
- 子菜单3
- 家长2
- 子菜单4
- 子菜单5
- 家长3
- 子菜单6
wp\u nav\u menu\u 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>
- 子菜单1
- 子菜单2
- 子菜单3
- 子菜单4
- 子菜单5
- 子菜单6
理想情况下,我希望每个子菜单“组”都位于自己的
容器中,但我似乎不知道如何做到这一点。下面是首选结果的一个示例
<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>
- 子菜单1
- 子菜单2
- 子菜单3
- 子菜单4
- 子菜单5
- 子菜单6
任何关于如何解决这个问题的建议都将不胜感激 无法插入html,因为Wordpress会处理结果。但是,您可以在for循环中插入一些代码来创建一个只包含html的数组。然后,可以将每个条目的文本和链接传递给您想要处理它的任何代码
因此,您可以使用代码替换循环中的unspec语句,以仅使用html构建一个数组,如所需输出的示例中所示。您还需要创建一个新的parm来处理这个新数组。您可以将另一个parm添加到传递到筛选器的$args中。在本例中,它将是一个数组,它将保存html。您在当前代码中使用$args->sub_菜单完成了此操作,并使用isset语句引用它。如果我理解您的答案,您希望我在for循环中传递HTML,但是过滤器
“wp_nav_menu_objects”
返回一个对象。所以我认为在这个过滤器中不可能使用HTML。