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:
- wrzuć załączony plik do folderu
wp-content/plugins
, a potem włącz wtyczkę - wrzuć załączony plik do folderu
wp-content/mu-plugins
- dołącz kod do pliku
functions.php
aktualnie używanego motywu
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:
Marcin Pietrzak
@Adrian: a co przy zmianie skórki? przyklejać kod? U mnie wystarczy zmienić nazwę menu.
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 ?