wp_nav_menu()

Выводит навигационное меню
Функция WordPress
INT 3.0.0
WordPress Icon

Описание функции

Функция wp_nav_menu() используется для отображения навигационного меню на сайте WordPress. Она позволяет создавать и выводить пользовательские меню, которые можно настраивать и редактировать в административной панели WordPress.

Эта функция предоставляет множество параметров для настройки внешнего вида и поведения меню. Она также поддерживает использование пользовательских классов CSS и обеспечивает гибкость в создании различных типов меню.

Использование

wp_nav_menu( array $args = array() ): void|string|false

Функция wp_nav_menu() принимает один параметр — массив аргументов $args, который является необязательным. Она возвращает либо void, если аргумент echo установлен в true, либо строку с HTML-кодом меню, если аргумент echo установлен в false. В случае, если меню не найдено или отсутствуют элементы, функция возвращает false.

  • menu (int|string|WP_Term): Идентификатор, слаг, название или объект меню. Принимает значение ID, слага, названия или объекта меню.
  • menu_class (string): CSS-класс, который будет применен к элементу ul формирующему меню. По умолчанию: ‘menu’.
  • menu_id (string): Идентификатор, который будет применен к элементу ul формирующему меню. По умолчанию: слаг меню с инкрементом.
  • container (string): Обернуть ли элемент ul и каким элементом. По умолчанию: ‘div’.
  • container_class (string): Класс, который будет применен к обертке. По умолчанию: ‘menu-{menu slug}-container’.
  • container_id (string): Идентификатор, который будет применен к обертке.
  • container_aria_label (string): Значение атрибута aria-label, которое будет применено к обертке, если она является элементом nav.
  • fallback_cb (callable|false): Функция обратного вызова, которая будет выполнена, если меню не существует. По умолчанию: ‘wp_page_menu’. Установите значение false для отключения резервного варианта.
  • before (string): Текст перед разметкой ссылки.
  • after (string): Текст после разметки ссылки.
  • link_before (string): Текст перед текстом ссылки.
  • link_after (string): Текст после текста ссылки.
  • echo (bool): Выводить ли меню или возвращать его. По умолчанию: true.
  • depth (int): Количество уровней иерархии, которые будут включены. 0 означает все уровни. По умолчанию: 0.
  • walker (object): Экземпляр пользовательского класса обходчика.
  • theme_location (string): Расположение темы, которое будет использоваться. Должно быть зарегистрировано с помощью register_nav_menu(), чтобы быть доступным для выбора пользователем.
  • items_wrap (string): Как обернуть элементы списка. Использует формат printf() с номерованными заполнителями. По умолчанию: ul с id и классом.
  • item_spacing (string): Сохранять или отбрасывать пробелы в HTML-разметке меню. Принимает значения ‘preserve’ или ‘discard’. По умолчанию: ‘preserve’.

Функция wp_nav_menu() возвращает либо void, если аргумент echo установлен в true, либо строку с HTML-кодом меню, если аргумент echo установлен в false. В случае, если меню не найдено или отсутствуют элементы, функция возвращает false.

<?php
$args = array(
    'menu' => 'primary-menu',
    'menu_class' => 'menu-class',
    'menu_id' => 'menu-id',
    'container' => 'nav',
    'container_class' => 'menu-container',
    'container_id' => 'menu-container-id',
    'container_aria_label' => 'Primary Menu',
    'fallback_cb' => false,
    'before' => '<span>Before</span>',
    'after' => '<span>After</span>',
    'link_before' => '<span>Link Before</span>',
    'link_after' => '<span>Link After</span>',
    'echo' => true,
    'depth' => 0,
    'walker' => new My_Custom_Walker(),
    'theme_location' => 'primary',
    'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>',
    'item_spacing' => 'preserve'
);
wp_nav_menu( $args );
?>

В приведенном выше примере кода используется функция wp_nav_menu() для вывода пользовательского меню с различными настройками. Все параметры функции wp_nav_menu() заданы в массиве $args. В данном примере используется пользовательский класс обходчика My_Custom_Walker.

Примеры использования

Отображение навигационного меню


$args = array(
    'menu' => 'primary-menu',
    'echo' => false
);
$menu = wp_nav_menu($args);
echo $menu;

В этом примере мы используем функцию wp_nav_menu() для отображения навигационного меню с идентификатором «primary-menu». Параметр echo установлен в значение false, чтобы функция вернула HTML-код меню вместо его непосредственного вывода. Затем мы выводим полученный HTML-код с помощью echo.

Настройка классов и идентификаторов меню


$args = array(
    'menu' => 'primary-menu',
    'menu_class' => 'custom-menu',
    'menu_id' => 'custom-menu-id',
    'echo' => false
);
$menu = wp_nav_menu($args);
echo $menu;

В этом примере мы добавляем пользовательский CSS-класс «custom-menu» к элементу ul меню и устанавливаем пользовательский идентификатор «custom-menu-id». Это позволяет нам стилизовать и идентифицировать меню с помощью CSS и JavaScript.

Определение контейнера для меню


$args = array(
    'menu' => 'primary-menu',
    'container' => 'nav',
    'echo' => false
);
$menu = wp_nav_menu($args);
echo $menu;

В этом примере мы используем элемент nav в качестве контейнера для меню. По умолчанию контейнером является элемент div. Мы можем выбрать любой другой HTML-элемент в качестве контейнера, указав его имя в параметре container.

Установка атрибутов контейнера


$args = array(
    'menu' => 'primary-menu',
    'container' => 'nav',
    'container_class' => 'custom-container',
    'container_id' => 'custom-container-id',
    'container_aria_label' => 'Primary Menu',
    'echo' => false
);
$menu = wp_nav_menu($args);
echo $menu;

В этом примере мы устанавливаем пользовательский CSS-класс «custom-container» и идентификатор «custom-container-id» для контейнера меню. Мы также добавляем атрибут «aria-label» со значением «Primary Menu» для доступности. Эти атрибуты могут быть использованы для стилизации и доступности меню.

Задание действия при отсутствии меню


$args = array(
    'menu' => 'primary-menu',
    'fallback_cb' => 'my_custom_menu',
    'echo' => false
);
$menu = wp_nav_menu($args);
echo $menu;
function my_custom_menu() {
    echo 'No menu found.';
}

В этом примере мы используем пользовательскую функцию my_custom_menu() в качестве обратного вызова (fallback) для случая, когда меню не найдено. Если меню с идентификатором «primary-menu» не существует, будет вызвана функция my_custom_menu(), которая выведет сообщение «No menu found.». Мы можем использовать этот обратный вызов для выполнения дополнительных действий при отсутствии меню.

Вопросы и ответы

Как создать и настроить меню в WordPress?

Для создания и настройки меню в WordPress используется функция wp_nav_menu(). Она позволяет отобразить навигационное меню на сайте.

Для создания меню необходимо передать массив аргументов в функцию wp_nav_menu(). В этом массиве можно указать следующие параметры:

  • menu: идентификатор, слаг, название или объект меню.
  • menu_class: CSS-класс для элемента ul, который формирует меню. По умолчанию — «menu».
  • menu_id: ID, применяемый к элементу ul, который формирует меню. По умолчанию — слаг меню с инкрементом.
  • container: обернуть ли элемент ul и каким тегом. По умолчанию — «div».
  • container_class: класс, применяемый к контейнеру. По умолчанию — «menu-{slug меню}-container».
  • container_id: ID, применяемый к контейнеру.
  • container_aria_label: значение атрибута aria-label, применяемого к контейнеру, если он является элементом nav.
  • fallback_cb: функция обратного вызова, которая будет вызвана, если меню не существует. По умолчанию — ‘wp_page_menu’. Установите значение false, чтобы отключить резервное меню.
  • before: текст перед разметкой ссылки.
  • after: текст после разметки ссылки.
  • link_before: текст перед текстом ссылки.
  • link_after: текст после текста ссылки.
  • echo: выводить ли меню или возвращать его. По умолчанию — true.
  • depth: количество уровней иерархии, которые должны быть включены. 0 означает все уровни. По умолчанию — 0.
  • walker: экземпляр пользовательского класса walker.
  • theme_location: местоположение темы, которое будет использоваться. Должно быть зарегистрировано с помощью функции register_nav_menu(), чтобы быть доступным для выбора пользователем.
  • items_wrap: как обернуть элементы списка. Использует формат printf() с номерованными заполнителями. По умолчанию — ul с id и классом.
  • item_spacing: сохранять ли пробелы в HTML меню. Принимает значения «preserve» или «discard». По умолчанию — «preserve».

Как добавить классы CSS к меню в WordPress?

Для добавления классов CSS к меню в WordPress можно использовать параметры menu_class и container_class функции wp_nav_menu().

Параметр menu_class позволяет указать CSS-класс для элемента ul, который формирует меню. Например, чтобы добавить класс «my-menu» к меню, нужно передать аргумент 'menu_class' => 'my-menu'.

Параметр container_class позволяет указать класс, который будет применен к контейнеру меню. Например, чтобы добавить класс «menu-container» к контейнеру, нужно передать аргумент 'container_class' => 'menu-container'.

Как изменить разметку HTML меню в WordPress?

Для изменения разметки HTML меню в WordPress можно использовать параметр items_wrap функции wp_nav_menu().

Параметр items_wrap позволяет указать, как обернуть элементы списка. Он использует формат printf() с номерованными заполнителями. По умолчанию, меню оборачивается в ul с id и классом. Например, чтобы изменить разметку на div с классом «my-menu», нужно передать аргумент 'items_wrap' => '<div class="my-menu">%3$s</div>'.

Как добавить иконки к пунктам меню в WordPress?

Для добавления иконок к пунктам меню в WordPress с помощью функции wp_nav_menu(), необходимо использовать CSS классы. В параметре menu_class можно указать классы, которые будут применены к элементу ul, формирующему меню. Для добавления иконок к пунктам меню, можно использовать псевдоэлементы ::before или ::after и применить стили к соответствующим классам пунктов меню.


$args = array(
    'menu_class' => 'menu',
);
wp_nav_menu($args);

Как добавить атрибуты aria-label к меню в WordPress?

Для добавления атрибута aria-label к меню в WordPress с помощью функции wp_nav_menu(), необходимо использовать параметр container_aria_label. В этом параметре можно указать значение атрибута aria-label, которое будет применено к контейнеру меню, если он является элементом nav.


$args = array(
    'container_aria_label' => 'Main Menu',
);
wp_nav_menu($args);

Как изменить порядок пунктов меню в WordPress?

Для изменения порядка пунктов меню в WordPress с помощью функции wp_nav_menu(), необходимо использовать параметр menu. В этом параметре можно указать идентификатор, слаг, имя или объект меню, которое будет отображаться. Пункты меню будут отображаться в том порядке, в котором они указаны в меню в административной панели WordPress.


$args = array(
    'menu' => 'main-menu',
);
wp_nav_menu($args);

Как добавить подменю в WordPress?

Для добавления подменю в WordPress с помощью функции wp_nav_menu() необходимо использовать параметр 'theme_location'. Этот параметр позволяет указать местоположение меню, которое будет отображаться. Местоположение меню должно быть зарегистрировано с помощью функции register_nav_menu().

Пример кода:


$args = array(
    'theme_location' => 'primary',
);
wp_nav_menu($args);

Как изменить количество уровней иерархии меню в WordPress?

Для изменения количества уровней иерархии меню в WordPress с помощью функции wp_nav_menu() необходимо использовать параметр 'depth'. Этот параметр позволяет указать количество уровней, которые будут включены в меню.

Пример кода:


$args = array(
    'depth' => 2,
);
wp_nav_menu($args);

Как изменить разделитель между пунктами меню в WordPress?

Для изменения разделителя между пунктами меню в WordPress с помощью функции wp_nav_menu() необходимо использовать параметр 'items_wrap'. Этот параметр позволяет указать, как обернуть элементы списка меню.

Пример кода:


$args = array(
    'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>',
);
wp_nav_menu($args);

Функция wp_nav_menu() в WordPress позволяет отображать навигационное меню. Она принимает массив аргументов, которые позволяют настроить различные аспекты меню, такие как местоположение, количество уровней иерархии и разделитель между пунктами меню. Функция возвращает либо пустоту, либо строку с HTML-кодом меню, в зависимости от значения параметра 'echo'.

Связанные элементы

  • Функция wp_nav_menu_item_post_type_meta_box(): Добавляет метабокс для выбора типа записи, который будет использоваться в качестве элемента меню.
  • Функция wp_get_nav_menu_items(): Возвращает объекты элементов меню для указанного меню.
  • Функция wp_nav_menu_update_menu_items(): Обновляет элементы меню при сохранении меню.
  • Хук wp_nav_menu_items: Позволяет добавить элементы меню внутрь тега <ul> перед его закрытием.
  • Класс Walker_Nav_Menu: Определяет, как будет выводиться меню. Может быть расширен для создания собственного вывода.
Обсуждение