Настройка только определенного меню с помощью «крючка»? Wp_nav_menu_items?

Благодаря некоторой помощи здесь мне удалось добавить окно пользовательского поиска в мое главное меню ... добавив это в функции my.php моей темы.

  add_filter ( 'wp_nav_menu_items', 'search_box_function');
  function search_box_function ($ nav) {
  return $ nav. "<li class = 'menu-header-search'> <form action = 'http: //example.com/' id = 'searchform' method = 'get'> <тип ввода = 'text' name = 's' id = 's' placeholder = 'Поиск'> </form> </li> ";
}
 

Однако теперь я добавил еще одно меню для добавления нижнего колонтитула, но окно поиска добавляется и к этому. Как я могу добавить окно поиска в основное меню?

Мой код для регистрации меню:

  register_nav_menus (массив (
  'primary' => __ («Первичная навигация», «двадцать»)
  'secondary' => __ ('Вторичное меню', 'двадцатьten'),

 ));
 

.. и код для отображения дополнительного меню:

  wp_nav_menu (array ('container_class' => 'menu-header', 'theme_location' => 'secondary'));
 
35 голосов | спросил cannyboy 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 23 Sep 2010 18:14:20 +0400 2010, 18:14:20

2 ответа


39

Чтобы добавить только специальное окно поиска в главное меню, вы можете передать второй параметр, предоставленный фильтром wp_nav_menu_items, и проверить, является ли theme_location основным местоположением

  add_filter ('wp_nav_menu_items', 'search_box_function', 10, 2);
function search_box_function ($ nav, $ args) {
    if ($ args-> theme_location == 'primary')
        return $ nav. "<li class = 'menu-header-search'> <form action = 'http: //example.com/' id = 'searchform' method = 'get'> <тип ввода = 'text' name = 's' id = 's' placeholder = 'Поиск'> </form> </li> ";

    return $ nav;
}
 
ответил ampt 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 23 Sep 2010 18:36:08 +0400 2010, 18:36:08
6

Альтернативный способ сделать это - добавить пул меню в фильтр wp_nav_menu_items.

Например, предположим, что у вас есть меню с именем Header, и вы всегда хотите, чтобы это меню (независимо от того, прикреплено ли оно к месту темы или нет), чтобы отобразить окно поиска. Вы можете сделать это, добавив в фильтр , в этом случае header .

Новый фильтр будет выглядеть следующим образом:

add_filter ('wp_nav_menu_header_items', 'search_box_function');

Обратите внимание на часть header нового фильтра. Это говорит WordPress, какое меню добавить функцию.

Это всего лишь один способ подойти к вашей текущей проблеме.

ответил Justin Kopepasah 20 ThuEurope/Moscow2012-12-20T00:30:10+04:00Europe/Moscow12bEurope/MoscowThu, 20 Dec 2012 00:30:10 +0400 2012, 00:30:10

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132