Personalizando apenas um menu específico usando o gancho "wp_nav_menu_items"?

35

Graças a alguma ajuda aqui, consegui adicionar uma caixa de pesquisa personalizada ao meu menu principal ... adicionando isso às funções do meu tema.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>";
}

No entanto, adicionei agora outro menu para colocar no rodapé, mas a caixa de pesquisa também é adicionada a este. Como eu adicionaria a caixa de pesquisa apenas ao menu principal?

Meu código para registrar os menus é:

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

 ) );

.. e o código para exibir o menu secundário é:

wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'secondary' ) ); 
    
por cannyboy 23.09.2010 / 16:14

2 respostas

39

Para adicionar somente a caixa de pesquisa personalizada ao menu principal, você pode passar o segundo parâmetro fornecido pelo filtro wp_nav_menu_items e verificar se o theme_location é o local principal

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;
}
    
por ampt 23.09.2010 / 16:36
6

Um método alternativo de fazer isso é adicionar o slug do menu ao filtro wp_nav_menu_items.

Por exemplo, digamos que você tenha um menu chamado Cabeçalho e sempre deseje esse menu (esteja ele anexado a um local do tema ou não) para exibir uma caixa de pesquisa. Você pode fazer isso adicionando o slug de menu, neste caso header , ao filtro.

O novo filtro seria o seguinte:

add_filter( 'wp_nav_menu_header_items', 'search_box_function' );

Observe a parte header do novo filtro. Isso diz ao WordPress em qual menu adicionar a função.

Esta é apenas uma maneira diferente de abordar seu problema atual.

    
por Justin Kopepasah 19.12.2012 / 21:30

Tags