Tworzenie menu w WordPress za pomocą funkcji register_nav_menus()
Dla wszystkich webmasterów rozpoczynających tworzenie strony internetowej w WordPressie, funkcja register_nav_menus() jest narzędziem o wysokim priorytecie. Funkcja ta umożliwia tworzenie niestandardowych menu nawigacyjnych w pliku funkcji motywu oraz szczególnie przydatna dla złożonych witryn, które wymagają wielu menu w różnych lokalizacjach.
Kluczowe aspekty funkcji:
- Rejestrowanie wielu lokalizacji menu:
- Dzięki
register_nav_menus()
możemy zdefiniować wiele różnych lokalizacji, w których mogą znajdować się nasze menu nawigacyjne. Na przykład możemy zarejestrować lokalizacje dla menu głównego, menu stopki, menu bocznego itp. - Każda lokalizacja jest identyfikowana za pomocą unikalnego klucza (np. “primary_menu”, “footer_menu”, “sidebar_menu”), który jest używany w kodzie do wyświetlania konkretnego menu.
- Dzięki
- Opis lokalizacji menu:
- W funkcji
register_nav_menus()
możemy również przypisać opis do każdej lokalizacji. Opis ten może pomóc innym osobom (np. innym programistom lub administratorom) zrozumieć, do czego służy dana lokalizacja menu.
- W funkcji
- Automatyczne wsparcie dla menu:
- Rejestrując lokalizacje menu za pomocą
register_nav_menus()
, automatycznie aktywujemy obsługę menu w motywie. Nie musimy już ręcznie dodawać wsparcia dla menu za pomocąadd_theme_support('menus')
.
- Rejestrując lokalizacje menu za pomocą
- Użycie funkcji
wp_nav_menu()
:- Po zarejestrowaniu lokalizacji menu możemy użyć funkcji
wp_nav_menu()
do wyświetlenia konkretnego menu w odpowiednim miejscu na stronie. - Funkcja
wp_nav_menu()
pozwala na dostosowanie wyglądu i zachowania menu, a także obsługuje różne opcje, takie jak sortowanie, wyświetlanie podmenu itp.
- Po zarejestrowaniu lokalizacji menu możemy użyć funkcji
Wykorzystanie register_nav_menus() w functions.php
Poniżej znajduje się praktyczny przykład, który demonstruje, jak użyć funkcji register_nav_menus() w pliku functions.php do tworzenia niestandardowych menu nawigacyjnych:
// Rejestruje niestandardowe menu nawigacyjne
function custom_theme_navigation_menus() {
register_nav_menus( array(
'primary-menu' => esc_html__( 'Menu główne', 'text-domain' ),
'footer-menu' => esc_html__( 'Menu stopki', 'text-domain' ),
'sidebar-menu' => esc_html__( 'Boczne menu', 'text-domain' ),
) );
}
add_action( 'init', 'custom_theme_navigation_menus' );
Szczegółowe omówienie kodu:
- Funkcja
custom_theme_navigation_menus()
rejestruje trzy niestandardowe lokalizacje menu nawigacyjnych: “Menu główne”, “Menu stopki” i “Boczne menu”. - Każda lokalizacja jest identyfikowana za pomocą unikalnego klucza (np. “primary-menu”), który jest używany w kodzie do wyświetlania konkretnego menu.
- Funkcja
register_nav_menus()
aktywuje obsługę menu w motywie WordPress, dzięki czemu możemy użyć funkcjiwp_nav_menu()
do wyświetlenia menu w odpowiednich miejscach na stronie.
W panelu administracyjnym, nowe niestandardowe menu nawigacyjne będzie wyglądać tak:
Zaawansowany przykład tworzenia niestandardowych lokalizacji menu nawigacyjnych
Poniżej prezentuję bardziej zaawansowany przykład wykorzystania funkcji register_nav_menus() w WordPressie, który zawiera dodatkowe funkcje, takie jak warunkowa rejestracja menu w oparciu o role użytkowników:
// Rejestruje zaawansowane menu nawigacyjne
function register_advanced_menus() {
if (current_theme_supports('menus')) {
register_nav_menus(
array(
'header-menu' => __('Menu Główne', 'text-domain'),
'footer-menu' => __('Menu Stopki', 'text-domain'),
'social-menu' => __('Menu Społecznościowe', 'text-domain')
)
);
if (current_user_can('editor') || current_user_can('administrator')) {
register_nav_menus(
array(
'editor-menu' => __('Menu Edytora', 'text-domain'),
'admin-menu' => __('Menu Administratora', 'text-domain')
)
);
}
}
}
add_action('after_setup_theme', 'register_advanced_menus');
Szczegółowe omówienie kodu:
- Funkcja
register_advanced_menus()
rejestruje zaawansowane lokalizacje menu nawigacyjnych, takie jak “Menu Główne”, “Menu Stopki” i “Menu Społecznościowe”. - Jeśli użytkownik ma uprawnienia edytora lub administratora, zostaną również zarejestrowane lokalizacje “Menu Edytora” i “Menu Administratora”.
- Funkcja
register_nav_menus()
aktywuje obsługę menu w motywie WordPress, dzięki czemu możemy użyć funkcjiwp_nav_menu()
do wyświetlania menu w odpowiednich miejscach na stronie.
Menu w szablonie motywu
Po stworzeniu lokalizacji menu, należy je wyświetlić w odpowiednim miejscu. Do tego celu służy funkcja wp_nav_menu(), która umożliwia wyświetlenie określonego menu w szablonie (np. w pliku header.php, footer.php lub sidebar.php). Na przykład:
<nav class="main-menu">
<?php
wp_nav_menu(
array(
'theme_location' => 'header-menu',
'menu_class' => 'menu',
)
);
?>
</nav>