Может ли кто-нибудь сказать мне, как работает wp_nav_menu
если не указано menu
или theme_location
?
У меня есть несколько сайтов, которые используют внутреннюю настройку навигации, которая не указывает меню. Казалось бы, это приводит к поиску WordPress во всех меню до тех пор, пока страница не будет найдена. Для 99% моих сайтов эта функциональность работает отлично.
Тем не менее, я заметил, что если несколько меню содержат одну и ту же страницу (и эти страницы имеют разные дочерние wp_nav_menu
указанные для них), wp_nav_menu
похоже, возвращает первое меню, которое оно обнаруживает, которое содержит нужную страницу. В некоторых случаях это заканчивается из меню, которое не содержит всех страниц в основной навигационной иерархии.
Поэтому мне было интересно, есть ли способ указать порядок меню (то есть сначала проверить главное меню, затем нижний колонтитул, затем утилиту и т. Д.), Или если должно быть реализовано главное меню , которое никогда не отображается на сайте, но используется для обеспечения правильной иерархии страниц для сайта.
Любые мысли о подходах или передовой практике были бы полезными.
Для полного раскрытия, обратите внимание, что я расширил свой wp_nav_menu, используя WP Nav Plus , но я не думаю, что плагин меняет мой вопрос
Я не уверен, что полностью слежу за вашим описанием, но дословно из документации:
Если не
theme_location
параметрtheme_location
, отображается функция
- меню, соответствующее идентификатору, slug или имени, заданному параметром
menu
;- в противном случае – первое непустое меню;
- в противном случае (или если меню, заданное меню пустым), вывод функции, заданной параметром
fallback_cb
(wp_page_menu()
, по умолчанию);- иначе ничего.
Codex> Справочник по функциям / wp nav menu
Поведение, которое вы видите, может быть просто связано с тем, какое меню является «первым», а не с некоторой сложной логикой, связанной с страницей.
Что касается рекомендации – зачем полагаться на что-то подобное на первом месте? Просто сделайте это явным, какое меню вам нужно, и устраните любую двусмысленность.