Intereting Posts
Проблема с условными тегами Получение внутреннего сервера на страницах подпапок Настройка «идентификаторов пользователей» и добавление панели «пользователь» в области администратора Крючок для плагина для вставки в мета-вход Добавьте мета к настраиваемому типу сообщения, который соответствует определенной таксономии Наклонение (помеченного) сообщения в начало архивов Пользовательское поле пользователя с помощью флажка как хранить значения в базе данных на иерархическом уровне Когда налоги зависят от страны, они не отображаются в итогах корзины Переход на промежуточный сервер, страницы с другого сайта, загружаемого в Фильтровать по заголовку и мета-ключу одновременно Отключить панель администратора Запросить сообщения с более чем 20 комментариями Многоуровневая конфигурация WordPress Кнопка вставить ссылку на передней панели wp_editor не работает

Проблема с wp_nav_menu, условными тегами и fallback_cb

Я создал несколько меню, и теперь я пытаюсь создать условную конструкцию с помощью wp_nav_menu в header.php, но поведение не так, как ожидалось. Я делаю что-то вроде

<?php if ( is_front_page() ) { wp_nav_menu( array( 'container_class' => 'menu-header', 'menu' => '68' )); } elseif ( is_single() ) { wp_nav_menu( array( 'container_class' => 'menu-header', 'menu' => '69' ) ); } else { wp_nav_menu( array( 'container_class' => 'menu-header', 'menu' => '33' )); } ?> 

последнее «else» ловит 404s и страницы, но с архивами (категориями, тегами, поиском, автором, …) меню возвращается к резервной копии по умолчанию (wp_list_pages) вместо меню 33. Любые идеи, почему это происходит? Примечание. Я изменяю тему TwentyTen.

В идеале вы должны передать аргумент «theme_location» в wp_nav_menu ().

Зарегистрируйте свои три меню в functions.php:

 register_nav_menus( array( 'front_page' => 'Front Page Menu', 'single' => 'Single Post Menu', 'default' => 'Default Menu' ) ); 

Затем замените свой код следующим:

 if ( is_front_page() ) { wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'front_page' )); } elseif ( is_single() ) { wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'single' ) ); } else { wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'default' )); } 

Затем убедитесь, что для каждого тематического местоположения, через панель мониторинга -> Внешний вид -> Меню, определено соответствующее настраиваемое меню

Если вы используете параметр menu , вы также можете использовать name или slug . Пожалуйста, попробуйте тоже. Если вы уверены в ID, тогда вы также можете попробовать использовать menu_id .

Я обнаружил, что проблема была вызвана фильтром pre_get_posts в моих functions.php. На самом деле, у меня была проблема с этим фильтром раньше , поэтому я должен был знать;) Приветствия!