user
  • 0
Гуру

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

  • 0

Я создал несколько меню, и теперь я пытаюсь настроить условную конструкцию с помощью 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' ));
} 
?>

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

Share
  1. Меню 33 существует? (этот идентификатор определенно правильный?) Если да, есть ли в нем какие-либо предметы?… также, какие-либо плагины установлены? И если да, то пробовали ли вы без их включения?

    • 0
  2. В идеале вы должны передать аргумент «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' ));
    } 
    

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

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

    • 0
  4. Я обнаружил, что проблема была каким-то образом вызвана фильтром pre_get_posts в файле functions.php. На самом деле, у меня раньше были проблемы с этим фильтром, так что я должен был знать 😉 Ура!

    • 0

Оставить ответ

You must login to add an answer.