php - 获取所有子菜单项和容器 WordPress
问题描述
我在 WordPress 中有以下菜单结构:
- 家长 1
- 子菜单 1
- 子菜单 2
- 子菜单 3
- 家长 2
- 子菜单 4
- 子菜单 5
- 家长 3
- 子菜单 6
我正在使用 WordPresswp_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>
理想情况下,我希望每个子菜单“组”都在自己的<ul>
容器中,但我似乎无法弄清楚如何做到这一点。Bellow 是首选结果的一个示例。
<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>
任何有关如何解决此问题的建议将不胜感激!
解决方案
您不能插入 html,因为 Wordpress 会处理结果。但是,您可以在 for 循环中插入一些代码来创建一个仅包含 html 的数组。然后可以将每个条目的文本和链接传递给您想要处理它的任何代码。
因此,您将使用代码替换循环中的 unspec 语句,以仅使用 html 构建数组,如您所需输出的示例中所示。您还将创建一个新参数来处理这个新数组。
推荐阅读
- python-3.x - 如何使用 python 中的 Paramiko 库将文件从 Windows 复制到 linux
- javascript - 在 html/js 中加密 src 的值
- python - 如何在python的where子句中使用变量来访问sql
- android - 在android中使用套接字发送和接收字符串
- python - 如果将光标悬停在小部件的特定区域上,则更改光标
- flutter - sms_autofill 无法检测到 OTP
- python - 如何在 Python 中找到以下问题的最小值?
- python - Tkinter 回调中的异常 - TypeError:字符串格式化期间并非所有参数都转换
- python - Python 流中的第一个非重复字符
- java - 集群标记显示不准确