У меня есть следующая структура меню в WordPress:
- Parent 1
- Подменю 1
- Подменю 2
- Подменю 3
- Parent 2
- Parent 3
Я использую фильтр 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;
}
}
Слишком отображать Nav:
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>
контейнере, но я не могу понять, как это можно сделать. Ниже приведен пример предпочтительного результата.
<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>
Любые советы о том, как подойти к этой проблеме, будут с благодарностью!