Grâce à de l'aide ici, j'ai réussi à ajouter un champ de recherche personnalisé à mon menu principal ... en l'ajoutant à 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 pourrais-je ajouter le champ de recherche au menu principal uniquement?
Mon code pour enregistrer les 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' ) );
10, 2
fait dans le code?10
est prioritaire (dix est la valeur par défaut),2
est le nombre d'arguments que la fonction que nous raccordons au filtre accepte.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 comme suit:
Notez la
header
portion du nouveau filtre. Ceci indique à WordPress à quel menu ajouter la fonction.Ce n'est qu'une façon différente d'aborder votre problème actuel.
la source