Я только что закончил веб-сайт, на котором требовалось иметь главное меню и подменю на боковой панели
То, как я выполнил задачу, состояло в том, чтобы главное меню было там, где оно было с глубиной 1 (отображать только родительские элементы). Обратите внимание, измените «menu» на свой идентификатор меню.
<?php wp_nav_menu( array( 'container_class' => 'menu', 'theme_location' => 'primary', 'depth' => '1', 'menu' => '3' ) ); ?>
Тогда все, что мне нужно было сделать, это опубликовать дочерние элементы. Вместо создания меню мне пришлось динамически генерировать меню. Таким образом, вместо использования операторов if или switch для каждого отдельного подменю, это следующий фрагмент кода, который я использовал. И это может быть за пределами цикла.
ПРИМЕЧАНИЕ: этот код был взят из Интернета и изменен, я не знаю оригинального автора.
<?PHP
// Get the parent's title (For display purpose)
$str_parenttitle = get_the_title($post->post_parent);
// This will display the child items of the parent
// And if it's a child item, display it's siblings
if($post->post_parent)
$children = wp_list_pages("title_li=&sort_column=menu_order&child_of=".$post->post_parent."&echo=0&depth=1&exclude=73");
else
$children = wp_list_pages("title_li=&sort_column=menu_order&child_of=".$post->ID."&echo=0&depth=1&exclude=73");
?>
Затем отобразить меню
<?PHP if ($children && is_page()): ?>
<ul class="menu">
<li <?php if ( is_page() && $post->post_parent ) {} else { ?>class="current_page_item"<?php } // Shows the parent item on the sub menu ?>>
<a href="<?php echo get_permalink($post->post_parent) ?>"><?php echo $str_parenttitle;?></a>
</li>
<?php echo $children; ?>
</ul>
<?PHP endif; ?>
Надеюсь, это поможет.