Personalizarea unui meniu specific folosind hook-ul "wp_nav_menu_items"
Mulțumită ajutorului primit aici, am reușit să adaug o casetă de căutare personalizată în meniul meu principal... adăugând acest cod în functions.php al temei
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='Caută'></form></li>";
}
Totuși, acum am adăugat un alt meniu pentru footer, dar caseta de căutare apare și în acesta. Cum aș putea adăuga caseta de căutare doar în meniul principal?
Codul meu pentru înregistrarea meniurilor este:
register_nav_menus( array(
'primary' => __( 'Navigare Principală', 'twentyten' ),
'secondary'=>__('Meniu Secundar', 'twentyten' ),
) );
..și codul pentru afișarea meniului secundar este:
wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'secondary' ) );
Pentru a adăuga caseta personalizată de căutare doar în meniul principal, puteți utiliza al doilea parametru oferit de filtrul wp_nav_menu_items și să verificați dacă theme_location este locația primară
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='Caută'></form></li>";
return $nav;
}

mulțumesc, e grozav... doar o întrebare de începător - ce face 10, 2
în cod?

10
este prioritatea (zece este valoarea implicită), 2
reprezintă numărul de argumente pe care funcția pe care o conectăm la filtru le acceptă.

@ ampt, Da, am încercat asta. A funcționat. aproape. Când mă autentific, link-urile din al doilea meniu dispar, cum pot rezolva asta?

Rețineți că începând cu WP 3.8, variabila este $args->menu în loc de $args->theme_location

@AlainJacometForte De fapt, $args->menu returnează ID-ul numeric al meniului, în timp ce $args->theme_location returnează șirul de caractere, deci acest răspuns este în continuare corect așa cum este. Nimic nu s-a schimbat dacă comparați șirurile de caractere.

O metodă alternativă de a face acest lucru este adăugarea slug-ului meniului la filtrul wp_nav_menu_items.
De exemplu, să presupunem că ai un meniu numit Header și dorești ca acest meniu (indiferent dacă este atașat unei locații din temă sau nu) să afișeze întotdeauna o căsuță de căutare. Poți face acest lucru prin adăugarea slug-ului meniului, în acest caz header
, la filtrul respectiv.
Noul filtru ar arăta astfel:
add_filter( 'wp_nav_menu_header_items', 'search_box_function' );
Observă partea header
din noul filtru. Aceasta îi spune WordPress la ce meniu să adauge funcția.
Acesta este doar un mod diferit de a aborda problema ta actuală.
