Personnaliser uniquement un menu spécifique à l'aide du crochet “wp_nav_menu_items”?

35

Grâce à l'aide dont je dispose ici, j'ai réussi à ajouter un champ de recherche personnalisé à mon menu principal ... en l'ajoutant au fichier functions.php de mon thème

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

Cependant, j'ai maintenant ajouté un autre menu à mettre dans le pied de page, mais le champ de recherche est également ajouté à celui-ci. Comment puis-je ajouter le champ de recherche au menu principal uniquement?

Mon code pour l’enregistrement des menus est:

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

 ) );

.. et le code pour afficher le menu secondaire est:

wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'secondary' ) ); 
    
posée cannyboy 23.09.2010 - 16:14
la source

2 réponses

39

Pour n’ajouter que la zone de recherche personnalisée au menu principal, vous pouvez passer le deuxième paramètre fourni par le filtre wp_nav_menu_items et vérifier si la localisation de thème est l’emplacement 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;
}
    
réponse donnée ampt 23.09.2010 - 16:36
la source
6

Une autre méthode consiste à ajouter le slug de menu au filtre wp_nav_menu_items.

Par exemple, supposons que vous ayez un menu nommé En-tête et que vous souhaitiez toujours que ce menu (qu’il soit associé à un emplacement de thème ou non) affiche un champ de recherche. Vous pouvez le faire en ajoutant le slug de menu, dans ce cas header , au filtre.

Le nouveau filtre serait le suivant:

add_filter( 'wp_nav_menu_header_items', 'search_box_function' );

Notez la portion header du nouveau filtre. Ceci indique à WordPress à quel menu ajouter la fonction.

Il ne s'agit que d'une manière différente d'aborder votre problème actuel.

    
réponse donnée Justin Kopepasah 19.12.2012 - 21:30
la source

Lire d'autres questions sur les étiquettes