Technologiczne, Gadżety, Telefony Komórkowe, Pobieranie Aplikacji!

Menu nawigacyjne WordPress: jak to działa

Jak już wiesz, menu nawigacyjne jest kluczowym elementem tego, jak dobrze działa Twoja witryna i jak ludzie lubią z niej korzystać. Menu witryny powinno być łatwe w użyciu i spójne na wszystkich stronach, aby pomóc odwiedzającym łatwo znaleźć i uzyskać dostęp do treści, których potrzebują. W przeciwnym razie prawdopodobnie odrzucą witrynę i poszukają innych witryn.

W tym artykule przyjrzymy się, jak WordPress obsługuje menu z perspektywy programisty.

Dodaj menu WordPress

Załóżmy, że utworzyłeś strony „Przykładowa strona 1” i „Przykładowa strona 2” w obszarze administracyjnym swojej witryny WordPress. Jeśli na ekranie menu administratora nie utworzono żadnych menu, prawdopodobnie zobaczysz domyślne menu w widoku z przodu ze wszystkimi dostępnymi stronami.

Po dodaniu menu w obszarze Wygląd -> Menu i wybraniu jednej z domyślnych lokalizacji (Podstawowa lub Pomocnicza) obok karty „Edytuj menu” pojawi się nowa zakładka „Lokalizacja”.

Za pomocą lewego paska bocznego możesz dodać wybrane pozycje menu, wybierając je z dostępnej zawartości.

Jeśli dodasz niestandardowe menu z poziomu ekranu menu administratora, zostanie ono wyświetlone zamiast menu domyślnego.

Jeśli aktywowałeś motyw blokowy Podobnie jak w przypadku witryny Twenty Twenty-Three, która posiada pełny edytor witryny, można łatwo dodać nawigację do układu witryny, przechodząc do edytora w menu administracyjnym Wygląd -> Edytor.

Funkcja register_nav_menus służy do rejestrowania menu nawigacyjnych w motywie WordPress. Akceptuje ona tablicę lokalizacji menu jako argument, a każda lokalizacja jest powiązana z unikalnym identyfikatorem lub nazwą lokalizacji motywu.

register_nav_menus( string[] $locations = array() )

Na przykład:

function my_theme_register_menus() {
    register_nav_menus( array(
        'primary-menu' => __( 'Primary Menu', 'my-theme' ),
        'footer-menu'  => __( 'Footer Menu', 'my-theme' ),
    ) );
}
add_action( 'after_setup_theme', 'my_theme_register_menus' );

W pliku functions.php Twojego aktywowanego motywu możesz zobaczyć slugi dla lokalizacji menu. W motywie GeneratePress, na przykład, w okolicach linii 57 w pliku functions.php:

// Register primary menu.
register_nav_menus(
    array(
        'primary' => __( 'Primary Menu', 'generatepress' ),
    )
);

Oto nazwa menu, z którą możesz pracować w argumentach funkcji wp_nav_menu, które omówimy dalej.

W witrynach WordPress sposobem na zachowanie odpowiedniej elastyczności menu i ich personalizację w sposób odpowiadający potrzebom danego projektu jest wykorzystanie wbudowanej funkcji WordPress — wp_nav_menu.

Funkcja register_nav_menus współpracuje z funkcją wp_nav_menu w celu wyświetlania menu nawigacyjnych.

Celem tej funkcji jest umożliwienie tworzenia linków menu na stronach WordPress, które będą wyglądać i działać w spersonalizowany sposób.

Struktura

Argumenty funkcji wp_nav_menu kontrolujące jej wygląd i zachowanie są następujące:

wp_nav_menu( array $args = array(
	'menu'				=> "", // (int|string|WP_Term) Desired menu. Accepts a menu ID, slug, name, or object.
	'menu_class'		=> "", // (string) CSS class to use for the ul element which forms the menu. Default 'menu'.
	'menu_id'			=> "", // (string) The ID that is applied to the ul element which forms the menu. Default is the menu slug, incremented.
	'container'			=> "", // (string) Whether to wrap the ul, and what to wrap it with. Default 'div'.
	'container_class'	=> "", // (string) Class that is applied to the container. Default 'menu-{menu slug}-container'.
	'container_id'		=> "", // (string) The ID that is applied to the container.
	'fallback_cb'		=> "", // (callable|bool) If the menu doesn't exists, a callback function will fire. Default is 'wp_page_menu'. Set to false for no fallback.
	'before'			=> "", // (string) Text before the link markup.
	'after'				=> "", // (string) Text after the link markup.
	'link_before'		=> "", // (string) Text before the link text.
	'link_after'		=> "", // (string) Text after the link text.
	'echo'				=> "", // (bool) Whether to echo the menu or return it. Default true.
	'depth'				=> "", // (int) How many levels of the hierarchy are to be included. 0 means all. Default 0.
	'walker'			=> "", // (object) Instance of a custom walker class.
	'theme_location'	=> "", // (string) Theme location to be used. Must be registered with register_nav_menu() in order to be selectable by the user.
	'items_wrap'		=> "", // (string) How the list items should be wrapped. Default is a ul with an id and class. Uses printf() format with numbered placeholders.
	'item_spacing'		=> "", // (string) Whether to preserve whitespace within the menu's HTML. Accepts 'preserve' or 'discard'. Default 'preserve'.
) );

UWAGA: Jeśli chcesz znaleźć i przestudiować oryginalny kod wp_nav_menu, możesz otworzyć plik wp-includes/nav-menu-template.php i przejść do linia 57.

Modyfikować

Zobaczmy zatem kilka przypadków, co można osiągnąć, modyfikując te argumenty. Wartości domyślne to:

$defaults = array(
  'menu'            => '',
  'container'       => 'div',
  'container_class' => 'menu-{menu slug}-container',
  'container_id'    => '',
  'menu_class'      => 'menu',
  'menu_id'         => '',
  'echo'            => true,
  'fallback_cb'     => 'wp_page_menu',
  'before'          => '',
  'after'           => '',
  'link_before'     => '',
  'link_after'      => '',
  'items_wrap'      => '',
  'depth'           => 0,
  'walker'          => '',
  'theme_location'  => ''
);

UWAGA: Aby śledzić, co będzie dalej i móc to odtworzyć, potrzebujesz dostępu FTP do instalacji WordPress. W folderze aktywnego motywu na swojej stronie internetowej znajdź plik functions.php i otwórz go za pomocą swojego ulubionego edytora.
Ponadto, w celu sprawdzenia bezpieczeństwa, upewnij się, że wiesz, jak utworzyć motyw potomny.

Przykłady

Przyjrzyjmy się kilku przykładom.

Pokaż menu tylko zalogowanym użytkownikom

wp_nav_menu( array(
    'theme_location' => is_user_logged_in() ? 'logged-in-menu' : 'logged-out-menu'
) );

Tutaj użyliśmy jest_użytkownikiem_zalogowanym funkcja w połączeniu z funkcją wp_nav_menu. Funkcja is_user_logged_in zwraca true lub false i ustala, czy bieżący użytkownik jest zalogowanym użytkownikiem.

Dostosuj CSS menu

wp_nav_menu( array(
  'theme_location' => 'primary',
  'menu_class'     => 'custom-menu-class',
) );

‘menu_class’ jest ustawione na ‘custom-menu-class’, co ustawia klasę CSS dla elementu kontenera menu. Pozwala to na dodanie własnego CSS do menu poprzez edycję CSS motywu potomnego w następujący sposób:

// container class
header .my-menu-class{}
  
// container class first unordered lists
header .my-menu-class ul {}
header .my-menu-class ul ul {}
  
// navigation items
header .my-menu-class li {}

i tak dalej.

Zawinąć menu?

wp_nav_menu( array( 'container' => false, ) );

Argument container jest używany do kontrolowania, czy menu powinno być owinięte w element container. Czy owinąć ul i czym to owinąć.

W ten sam sposób możesz zastąpić container_class i container_id:

wp_nav_menu( array(
  'theme_location' => 'primary',
  'container'      => 'nav',
  'container_class'=> 'custom-container-class',
  'container_id'   => 'custom-container-id',
) );

Zawijanie przedmiotów

Możesz zrobić to samo, aby zmienić strukturę HTML otaczającą listę pozycji menu, korzystając z tego przykładu:

wp_nav_menu( array(
  'theme_location' => 'primary',
  'items_wrap'     => '',
) );

Tekst przed lub po tekście linku

Może Ci się to przydać, jeśli chcesz dodać tylko tekst lub nawet owinąć link elementem HTML, takim jak span:

wp_nav_menu( array(
  'theme_location' => 'primary',
  'link_before'    => '',
  'link_after'     => '',
) );

Klasa Walkera

W WordPress 2.1 dodano klasę Walker WordPress, aby dać programistom możliwość przechodzenia przez struktury danych przypominające drzewa w celu renderowania HTML. Od tego czasu okazała się ona świetną funkcją dostosowywania menu. Na szczęście mamy świetny artykuł poświęcony temu tematowi, który zalecamy poświęcić na przestudiowanie. W naszym artykule o klasie Walker zapoznasz się z działaniem parametru walker i sposobem dostosowywania wyników na swój własny sposób.

Wniosek

Funkcja wp_nav_menu umożliwia modyfikację i personalizację zachowania domyślnego menu poprzez nadpisanie jego argumentów. Studiując kod i konsultując podane przez nas przykłady, możesz poeksperymentować i ostatecznie stworzyć unikalne menu, które będą pasować do Twojej witryny WordPress i zapewnią użytkownikom przyjazne dla użytkownika doświadczenie nawigacyjne.

Rozpocznij 14-dniowy bezpłatny okres próbny

Wypróbuj nasz nagradzany hosting WordPress!