web-dev-qa-db-fra.com

Où les menus personnalisés sont-ils construits?

J'ai créé un menu simple dans wp-admin> apparence> menus appelé main-nav. Fonctionne bien.

Cependant, j'aimerais ajouter un élément personnalisé à la fin du menu ... un champ de recherche similaire à celui de la barre de menus Apple.com. Je ne peux pas savoir où les menus sont construits en code. Où puis-je ajouter ceci ... des idées?

(J'utilise le thème des starkers)

MODIFIER

Merci à tnorthcutt et hakre de m'avoir orienté dans la bonne direction. La solution consistait à insérer ce code dans les autres éléments 'add_filter' du 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>";
}

UPDATE

La solution de @ tnorthcutt est idéale lorsque vous n'avez qu'un seul menu à l'écran, mais si vous ajoutez un deuxième menu, il ajoute également le champ de recherche à ce menu. Comment cibleriez-vous un seul menu? J'ai enregistré mon menu est comme suit:

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

 ) );

..et le secondaire est montré comme ceci:

wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'secondary' ) ); 
2
cannyboy

Essaye ça:

add_filter('wp_nav_menu_items','search_box_function');
function search_box_function {
search box code goes here
}

Pour référence, jetez un œil à l'excellent tutoriel de Bill Erickson avec le framework Genesis.

1
Travis Northcutt