¿Personalizando solo un menú específico usando el gancho “wp_nav_menu_items”?

35

Gracias a un poco de ayuda aquí, logré agregar un cuadro de búsqueda personalizado a mi menú principal ... agregando esto a las funciones de mi tema.

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>";
}

Sin embargo, ahora he agregado otro menú para poner en el pie de página, pero el cuadro de búsqueda se agrega a este también. ¿Cómo agregaría el cuadro de búsqueda solo al menú principal?

Mi código para registrar los menús es:

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

 ) );

..y el código para mostrar el menú secundario es:

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

2 respuestas

39

Para agregar solo el cuadro de búsqueda personalizado al menú principal, puede pasar el segundo parámetro proporcionado por el filtro wp_nav_menu_items y verificar si la ubicación del tema es la ubicación 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;
}
    
respondido por el ampt 23.09.2010 - 16:36
6

Un método alternativo para hacer esto es agregar la barra de menú al filtro wp_nav_menu_items.

Por ejemplo, supongamos que tiene un menú llamado Encabezado y que siempre desea que este menú (ya sea que esté adjunto a una ubicación del tema o no) muestre un cuadro de búsqueda. Puede hacerlo agregando la barra de menú, en este caso header , al filtro.

El nuevo filtro sería el siguiente:

add_filter( 'wp_nav_menu_header_items', 'search_box_function' );

Observe la parte header del nuevo filtro. Esto le dice a WordPress en qué menú agregar la función.

Esta es solo una manera diferente de abordar su problema actual.

    
respondido por el Justin Kopepasah 19.12.2012 - 21:30

Lea otras preguntas en las etiquetas