cannyboy
  • 0
Новичок

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

  • 0

Благодаря некоторой помощи здесь мне удалось добавить пользовательское окно поиска в мое главное меню… добавив его в файл functions.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'><input type='text' name='s' id='s' placeholder='Search'></form></li>";
}

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

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

register_nav_menus( array(
  'primary' => __( 'Primary Navigation', 'twentyten' ),
  'secondary'=>__('Secondary Menu', 'twentyten' ),

 ) );

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

wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'secondary' ) ); 
Share
  1. Чтобы добавить только пользовательское окно поиска в главное меню, вы можете передать второй параметр, предоставленный фильтром 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'><input type='text' name='s' id='s' placeholder='Search'></form></li>";
    
        return $nav;
    }
    
    • 0
  2. Альтернативный способ сделать это — добавить ярлык меню в фильтр wp_nav_menu_items.

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

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

    add_filter('wp_nav_menu_header_items', 'search_box_function');
    

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

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

    • 0

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

You must login to add an answer.