Я пытаюсь показать в меню, как указано в WP Menu backend, однако как можно загрузить дочерний элемент родительской страницы, не скрывая остальных.
пример
Main-1
Main-2
Main-3
При нажатии на Main-1 должно отображаться
Main-1
— Sub-1
— Sub-2
Main-2
Main-3
<?php if (has_nav_menu( 'secondary' )) { wp_nav_menu( array( 'container' => '', 'container_class' => '', 'menu_class' => '', 'menu_id' => 'menu-header-menu', 'fallback_cb' => 'wp_page_menu', 'items_wrap' => '<ul id="%1$s">%3$s</ul>', 'sort_column' => 'menu_order', 'theme_location' => 'secondary' ) ); }
Это основной код, который я использую
'depth'=>-1
покажет все уровни ( источник ^ ):
$ глубина
(целое) (необязательно). Сколько уровней иерархии должно быть включено, где0
означает все.-1
отображает ссылки на любой глубине и упорядочивает их в одном плоском списке.
По умолчанию: 0
Таким образом, ваш код будет:
<?php if (has_nav_menu( 'secondary' )) { wp_nav_menu( array( 'container' => '', 'menu_class' => '', 'menu_id' => 'menu-header-menu', 'items_wrap' => '<ul id="%1$s">%3$s</ul>', 'depth' => -1, 'theme_location' => 'secondary' ) ); }
И СУХОЙ – не повторяй себя . Поскольку значением fallback_cb
по умолчанию является wp_page_menu
, вам не нужно его повторять. Так и container_class
. И нет такого параметра wp_nav_menu()
в wp_nav_menu()
.
Вы должны положить
register_nav_menus( array( 'secondary'=>__('Secondary Menu', 'text-domain') ) );
в вашем functions.php
зарегистрируйте навигационное меню, чтобы вы могли назначить свое меню этому местоположению. Даже при том, что вы создаете новое меню из меню «Внешний вид», если вы не назначили его в нужное место, то вы не можете включить его там.