webentwicklung-frage-antwort-db.com.de

Anpassen nur eines bestimmten Menüs mit dem Hook "wp_nav_menu_items"?

Dank einiger Hilfe hier habe ich es geschafft, meinem Hauptmenü ein benutzerdefiniertes Suchfeld hinzuzufügen ... indem ich dieses zur functions.php meines Themas hinzufügte

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

Allerdings habe ich jetzt ein weiteres Menü hinzugefügt, um es in die Fußzeile einzufügen, aber das Suchfeld wird auch diesem hinzugefügt. Wie füge ich das Suchfeld nur dem Hauptmenü hinzu?

Mein Code zum Registrieren der Menüs lautet:

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

 ) );

..und der Code zum Anzeigen des sekundären Menüs lautet:

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

Um nur das benutzerdefinierte Suchfeld zum Hauptmenü hinzuzufügen, können Sie den zweiten Parameter des Filters wp_nav_menu_items übergeben und prüfen, ob theme_location der primäre Speicherort ist

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;
}
40
ampt

Eine alternative Methode hierfür ist das Hinzufügen des Menü-Slugs zum Filter wp_nav_menu_items.

Angenommen, Sie haben ein Menü mit dem Namen Header und möchten immer, dass dieses Menü (unabhängig davon, ob es an einen Themenort angehängt ist oder nicht) ein Suchfeld anzeigt. Sie können dies tun, indem Sie den Menü-Slug, in diesem Fall header, zum Filter hinzufügen.

Der neue Filter würde wie folgt aussehen:

 add_filter ('wp_nav_menu_header_items', 'search_box_function'); 

Beachten Sie den Abschnitt header des neuen Filters. Dies teilt WordPress mit, zu welchem ​​Menü die Funktion hinzugefügt werden soll.

Dies ist nur ein anderer Weg, um Ihr aktuelles Problem anzugehen.

7