Пользовательское меню на странице поиска отсутствует - PullRequest
3 голосов
/ 19 ноября 2010

Я почесал голову над этим, поэтому заранее благодарю за любую помощь.Очень признателен.

У меня есть меню в WP 3.0.1, которое я вызываю в header.php, используя:

wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) );

Оно хорошо отображается на каждой странице отдельно из результатов поиска.Файл search.php начинается со стандартного get_header();, поэтому это должен быть код wp_nav_menu, верно?Но ничто не обернуто в условное выражение is_search() или что-либо еще.

Выходной HTML-код должен выглядеть следующим образом:

<div class="menu-header">
    <ul id="menu-main-menu" class="menu">
        <li class="menu-item">
            <a>Link 1</a>
        </li>
        <li class="menu-item">
            <a>Link 2</a>
        </li>
    </ul>
</div>

Но вместо этого он доходит до <ul> и не 't вывод любого <li> s:

<div class="menu-header">
    <ul id="menu-main-menu" class="menu">
    </ul>
</div>

Самое странное.Кто-нибудь еще сталкивался с этим раньше?Просто слишком поздно, и я упускаю что-то очевидное?

Ответы [ 3 ]

4 голосов
/ 03 мая 2012

Попробуйте этот код:

function menu_fix_on_search_page( $query ) {
    if(is_search()){
        $query->set( 'post_type', array(
         'post', 'nav_menu_item'
            ));
          return $query;
    }
}
add_filter( 'pre_get_posts', 'menu_fix_on_search_page' );

Вставьте это в functions.php в ваших файлах темы.

4 голосов
/ 04 июня 2012

@ Код ZoulRic работает нормально, но он нарушает функцию поиска в библиотеке мультимедиа. Чтобы предотвратить это, добавьте:

if( !is_admin() )

перед последней строкой, поэтому ваш код выглядит так:

function menu_fix_on_search_page( $query ) {
   if(is_search()){
       $query->set( 'post_type', array(
        'attachment', 'post', 'nav_menu_item', 'film', 'music'
          ));
         return $query;
         }
   }
if( !is_admin() ) add_filter( 'pre_get_posts', 'menu_fix_on_search_page' );
4 голосов
/ 28 апреля 2011

Возможно, вы установили фильтр, который перехватывает запрос, отвечающий за создание ссылок навигационного меню, или, более конкретно, переопределяет тип записи nav_menu_item, требуемый объектом запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...