Wraz z aktualizacją WordPress do wersji 3.0 otrzymaliśmy możliwość tworzenia własnych menu z poziomu zakładki “Wygląd” – jest to zdecydowanie duży krok w poprawę funkcjonalności WordPress’a
i z pewnością daje nam większe możliwości niż stosowane na ogół “wp_list_pages()“.
Nowa funkcja, o której mowa w tym artykule to “wp_nav_menu“.
1. Pierwszym naszym krokiem będzie włączenie możliwości wyświetlania stworzonych przez nas nawigacji (o tym w kroku 2), a robimy to za pomocą funkcji “register_nav_menus” – do pliku functions.php w naszym theme dodajemy:
register_nav_menus(array('menu1' => 'Menu główne'));
Jeżeli chcemy zdefiniować więcej menu oddzielamy je w tablicy przecinkiem:
register_nav_menus(array('menu1' => 'Menu główne','menu2' => 'Menu stopka'));
2. Następną rzeczą jaką musimy wykonać jest przygotowanie menu wg. własnych potrzeb i przypisanie go do nazwy, którą zdefiniowaliśmy w kroku 1, tak aby WordPress wiedział które menu ma wyświetlić.
Aby to zrobić w panelu administratora przechodzimy do zakładki “Wygląd” -> Menu i w zakładce dodaj (+) wpisujemy dowolną nazwę (nie musi być ona taka sama jak w funkcji register_nav_menus), np. “Przykładowa nawigacja“.
Teraz musimy dodać do niej jakieś linki, rozglądamy się zatem za panelem o nazwie “Strony” i zaznaczamy w nim te strony, które mają pojawić się w naszym menu, a następnie klikamy na “dodaj do menu“.
Wybrane strony powinny się teraz pojawić w nawigacji, możemy zmieniać ich nazwy, tytuły, a nawet ich kolejność oraz hierarchię poprzez przeciąganie i upuszczanie.
Zanim wyświetlimy stworzone menu musimy jeszcze powiązać je ze stworzoną wcześniej funkcją
z kroku 1.
W panelu “Położenia motywów” do Menu główne przypisujemy nazwę stworzonej przez nas nawigacji – w moim przypadku jest to “Przykładowa nawigacja“.
3. Funkcja wp_nav_menu, o której wspomniałem na samym początku wyświetla wybrane, zdefiniowane wcześniej (krok 1) i przygotowane menu (krok 2) w formie div’a z listą ul, zatem nie powinno być z nim większych problemów jeżeli chodzi o styl strony.
Funkcję możemy wrzucić w dowolne miejsce na naszym blogu.
<?php
wp_nav_menu(array('sort_column' => 'menu_order', 'theme_location'=>'menu1'));
?>
Funkcja posiada jeszcze kilka przydatnych opcji o których warto poczytać, a zapoznać się z nimi możecie tutaj.