Filtr dnia: wp_nav_menu_items

Wiele razy zdarzyło mi się przeczytać pytanie jak dodać pole formularza wyszukiwania do dowolnego menu. Odpowiedzi na to pytanie są różne: od typowego „nie da się” po mało eleganckie grzebanie po plikach motywu. A przecież WordPress, dzięki mechanizmowi filtrów i akcji, oferuje nam możliwość modyfikowanie prawie każdego elementu.

W podanym kodzie do menu, które ma nazwę „menu_default” doklejany jest formularz wyszukiwania.

class iworks_search2menu
{
    public function __construct()
    {
        $this->menus = array( 'menu_default' );
        add_filter( 'wp_nav_menu_items', array( $this, 'add_search' ), 99, 2 );
    }
 
    public function add_search( $items, $args )
    {
        if ( in_array( $args->theme_location, $this->menus ) ) {
            $items .= sprintf(
                '<li class="search">%s</li>',
                get_search_form( false )
            );
        }
        return $items;
    }
}
 
new iworks_search2menu();

Kod do pobrania:

[zip href='http://iworks.pl/wp-content/uploads/2012/10/iworks-add-search-to-menu.php-.zip']iworks_add_search_to_menu.php[/zip]

Jak użyć podany kod?

Masz 3 rozwiązania:

  1. wrzuć załączony plik do folderu wp-content/plugins, a potem włącz wtyczkę
  2. wrzuć załączony plik do folderu wp-content/mu-plugins
  3. dołącz kod do pliku functions.php aktualnie używanego motywu

Poprzedni

WordCamp 2012 Gdańsk

Następne

WordPress 3.5 Beta 2

3 komentarze

  1. Adrian

    Prościej dodać do functions.php skórki:

    add_filter(’wp_nav_menu_items’,’add_search_box’, 10, 2);
    function add_search_box($items, $args) {

    ob_start();
    get_search_form();
    $searchform = ob_get_contents();
    ob_end_clean();

    $items .= ” . $searchform . ”;

    return $items;
    }

    A potem utworzyć plik searchform.php w katalogu skórki i wkleić do niego zawartość taką, jeśi chce się mieć tekst: wpisz tekst… wewnątrz okna szukania:

  2. @Adrian: a co przy zmianie skórki? przyklejać kod? U mnie wystarczy zmienić nazwę menu.

  3. Paweł

    Adrian, mogę Cię poprosić o pomoc ?
    Skopiowałem plik z kodem do folderu wp-content/plugins, włączyłem wtyczkę. Co powinienem dalej zrobić, żeby pole „szukaj” pojawiło się na pasku menu ?

Oparte na WordPress & Theme by Anders Norén