it-swarm.dev

Přizpůsobení pouze specifické nabídky pomocí "wp_nav_menu_items" Hook?

Díky nějaké pomoci na tomto místě se mi podařilo přidat vlastní vyhledávací pole do hlavního menu ... přidáním tohoto do funkce theme.php

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

Nicméně, jsem nyní přidal další menu, aby v zápatí, ale vyhledávací pole dostane přidán k tomuto taky. Jak mohu přidat vyhledávací pole pouze do primární nabídky?

Můj kód pro registraci nabídek je:

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

 ) );

.. a kód pro zobrazení sekundární nabídky:

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

Chcete-li do hlavního menu přidat pouze vlastní vyhledávací pole, můžete předat druhý parametr poskytnutý filtrem wp_nav_menu_items a zkontrolovat, zda je téma theme_location primárním umístěním

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

Alternativním způsobem, jak toho dosáhnout, je přidání nabídky slg do filtru wp_nav_menu_items.

Řekněme například, že máte nabídku s názvem Záhlaví a vždy chcete, aby toto menu (bez ohledu na to, zda je připojeno k umístění motivu nebo ne) zobrazilo vyhledávací pole. Můžete tak učinit přidáním nabídky slim, v tomto případě header, do filtru.

Nový filtr bude následující:

 add_filter ('wp_nav_menu_header_items', 'search_box_function'); 

Všimněte si header části nového filtru. To řekne WordPress jaké menu přidat funkci.

To je jen jeden jiný způsob, jak se přiblížit aktuálnímu problému.

7
Justin Kopepasah