Получение элементов меню с помощью wp_get_nav_menu_items() – WP 3.0.0

WP_GET_NAV_MENU_ITEMS() │ WP 3.0.0

Функция wp_get_nav_menu_items() получает элементы навигационного меню в виде массива.

Что это такое?

Передав название меню, его ID или слаг, вы сможете получить элементы навигационного меню. Все элементы (ссылки) из указанного навигационного меню создаются в административной панели в разделе: Внешний вид > Меню.

Примечание: Большинство аргументов, переданных в параметр $args, за исключением output_key, предназначены для получения постов nav_menu_item с помощью функции get_posts(). Эти аргументы могут косвенно влиять на окончательный порядок и содержимое возвращаемых элементов меню.

Использует

Функция также работает с wp_get_nav_menu_object() для получения объектов меню.

Хуки функции

  • wp_get_nav_menu_items

Возврат

Функция возвращает массив элементов меню или false, если меню не найдено.

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

$items = wp_get_nav_menu_items( 5, [
    'output_key' => 'menu_order',
] );

Аргументы функции

Функция wp_get_nav_menu_items( $menu, $args ); принимает следующие параметры:

$menu (обязательный)

  • Тип: int|string|WP_Term
  • Это ID меню, слаг, название или объект WP_Term.

Примечание: Идентификатор, установленный во время регистрации меню (местоположение меню), здесь не сработает.

$args (массив)

  • Аргументы для передачи в get_posts().
  • По умолчанию: array() - предустановленные значения

Возможные аргументы:

  • order (string)

    • Как сортировать элементы меню: ASC (по возрастанию) или DESC (по убыванию). Игнорируется, если outputARRAY_A.
    • По умолчанию: ASC
  • orderby (string)

    • Поле для сортировки элементов меню, полученных из get_posts().
    • Дополнительное поле для сортировки может быть указано в параметре output_key.
    • По умолчанию: menu_order
  • output (string)

    • В каком формате вы хотите получить элементы.

    Если ARRAY_A, то к каждому элементу меню (объекту) добавляется еще одно свойство (для сортировки). Имя добавленного свойства указывается в параметре $output_key. Значение нового свойства будет номером — порядковым номером элемента меню. Элементы меню также будут отсортированы с помощью функции wp_list_sort() по полю $output_key в порядке возрастания.

  • output_key (string)

    • Ключ для использования при сортировке возвращаемых элементов меню.
  • post_type (string)

    • Тип поста элементов меню.
    • По умолчанию: nav_menu_item
  • post_status (string)

    • Статус поста элементов меню.
    • По умолчанию: publish
  • nopaging (true|false)

    • Указывает, нужно ли получать все элементы меню (true) или использовать пагинацию (false).
    • По умолчанию: true

Примеры

Пример 1: Создание простого списка меню

$menu_name = 'custom_menu_slug';
$locations = get_nav_menu_locations();

if( $locations && isset( $locations[ $menu_name ] ) ){
    $menu_items = wp_get_nav_menu_items( $locations[ $menu_name ] );
    $menu_list = '';
} else {
    $menu_list = '
  • Меню "' . $menu_name . '" не определено.
'; }

Пример 2: Какие данные содержит возвращаемый объект?

Не имеет значения, какая ссылка добавлена в меню в админке: запись, таксономия или произвольная ссылка. Все они хранятся в таблице wp_posts с одинаковыми полями.

$items = wp_get_nav_menu_items( 654 );
print_r( $items );

Пример 3: Построение меню Bootstrap 3 с подменю

function create_bootstrap_menu( $theme_location ) {
    if ( ($theme_location) && ($locations = get_nav_menu_locations()) && isset($locations[$theme_location]) ) {
        $menu_list  = '

Изменения

С версии 3.0.0 функция была введена в WordPress.

Заключение

Функция wp_get_nav_menu_items() позволяет эффективно управлять элементами меню в WordPress. Вы можете легко настраивать вывод, сортировку и форматирование меню для вашего сайта, используя простые аргументы и примеры, приведенные выше.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *