- Описание функции
- Примеры использования
- Получение всех элементов меню навигации
- Установка порядка элементов меню
- Сортировка элементов меню
- Установка типа записи элементов меню
- Установка статуса записи элементов меню
- Вопросы и ответы
- Как получить все элементы меню навигации?
- Как отсортировать элементы меню навигации?
- Как изменить тип поста элементов меню навигации?
- Как изменить статус поста элементов меню навигации?
- Как изменить порядок вывода элементов меню навигации?
- Как получить все элементы меню без пагинации?
- Как обновить кэш элементов меню навигации?
- Связанные элементы
Описание функции
Функция wp_get_nav_menu_items() используется для получения всех элементов меню навигации. Она извлекает все элементы меню указанного навигационного меню и возвращает их в виде массива.
Использование
wp_get_nav_menu_items( int|string|WP_Term $menu, array $args = array() ): array|false Функция принимает два параметра: $menu (обязательный) и $args (необязательный).
$menu(int|string|WP_Term) — Идентификатор, слаг, имя или объект меню. Обязательный параметр.$args(array) — Дополнительные аргументы для передачи в функциюget_posts().order(string) — Порядок сортировки элементов меню, полученных с помощьюget_posts(). Будет проигнорирован, если ‘output’ имеет значение ARRAY_A. По умолчанию ‘ASC’.orderby(string) — Поле для сортировки элементов меню, полученных с помощьюget_posts(). Укажите поле для сортировки через ‘output_key’, чтобы повлиять на порядок вывода элементов меню. По умолчанию ‘menu_order’.post_type(string) — Тип записи элементов меню. По умолчанию ‘nav_menu_item’.post_status(string) — Статус записи элементов меню. По умолчанию ‘publish’.output(string) — Как упорядочить выводимые элементы меню. По умолчанию ARRAY_A.output_key(string) — Ключ, используемый для упорядочивания фактических элементов меню, которые возвращаются. Обратите внимание, что это не аргументget_posts()и будет влиять только на вывод элементов меню, обработанных в этой функции. По умолчанию ‘menu_order’.nopaging(bool) — Получить все элементы меню (true) или разбить на страницы (false). По умолчанию true.update_menu_item_cache(bool) — Обновить кэш элементов меню. По умолчанию true.- Дополнительные аргументы из
get_posts().
Функция возвращает массив элементов меню или false, если элементы меню не найдены.
<?php
$menu_id = 2; // Идентификатор меню
$args = array(
'order' => 'ASC',
'orderby' => 'menu_order',
'post_type' => 'nav_menu_item',
'post_status' => 'publish',
'output' => ARRAY_A,
'output_key' => 'menu_order',
'nopaging' => true,
'update_menu_item_cache' => true
);
$menu_items = wp_get_nav_menu_items( $menu_id, $args );
if ( ! empty( $menu_items ) ) {
foreach ( $menu_items as $menu_item ) {
// Вывод информации о каждом элементе меню
echo 'ID: ' . $menu_item->ID . '<br>';
echo 'Title: ' . $menu_item->title . '<br>';
echo 'URL: ' . $menu_item->url . '<br>';
echo 'Description: ' . $menu_item->description . '<br>';
echo 'Parent ID: ' . $menu_item->menu_item_parent . '<br>';
echo 'Order: ' . $menu_item->menu_order . '<br>';
echo '<br>';
}
}
?> В этом примере мы получаем элементы меню для меню с идентификатором 2. Затем мы выводим информацию о каждом элементе меню, такую как ID, заголовок, URL, описание, родительский ID и порядок.
Примеры использования
Получение всех элементов меню навигации
$menu_items = wp_get_nav_menu_items('main-menu');
if ( ! empty( $menu_items ) ) {
foreach ( $menu_items as $menu_item ) {
// Выводим название элемента меню
echo $menu_item->title;
}
}
В данном примере мы используем функцию wp_get_nav_menu_items() для получения всех элементов меню навигации с идентификатором «main-menu». Затем мы проверяем, есть ли элементы меню, и если есть, выводим их названия.
Установка порядка элементов меню
$args = array(
'menu' => 'main-menu',
'orderby' => 'menu_order',
'order' => 'DESC'
);
$menu_items = wp_get_nav_menu_items( $args );
if ( ! empty( $menu_items ) ) {
foreach ( $menu_items as $menu_item ) {
// Выводим название элемента меню
echo $menu_item->title;
}
}
В данном примере мы используем функцию wp_get_nav_menu_items() для получения всех элементов меню навигации с идентификатором «main-menu». Мы также устанавливаем порядок элементов меню с помощью параметра orderby и устанавливаем его в «menu_order». Затем мы проверяем, есть ли элементы меню, и если есть, выводим их названия.
Сортировка элементов меню
$args = array(
'menu' => 'main-menu',
'orderby' => 'title',
'order' => 'ASC'
);
$menu_items = wp_get_nav_menu_items( $args );
if ( ! empty( $menu_items ) ) {
foreach ( $menu_items as $menu_item ) {
// Выводим название элемента меню
echo $menu_item->title;
}
}
В данном примере мы используем функцию wp_get_nav_menu_items() для получения всех элементов меню навигации с идентификатором «main-menu». Мы также устанавливаем сортировку элементов меню по названию с помощью параметра orderby и устанавливаем его в «title». Затем мы проверяем, есть ли элементы меню, и если есть, выводим их названия.
Установка типа записи элементов меню
$args = array(
'menu' => 'main-menu',
'post_type' => 'page'
);
$menu_items = wp_get_nav_menu_items( $args );
if ( ! empty( $menu_items ) ) {
foreach ( $menu_items as $menu_item ) {
// Выводим название элемента меню
echo $menu_item->title;
}
}
В данном примере мы используем функцию wp_get_nav_menu_items() для получения всех элементов меню навигации с идентификатором «main-menu». Мы также устанавливаем тип записи элементов меню с помощью параметра post_type и устанавливаем его в «page». Затем мы проверяем, есть ли элементы меню, и если есть, выводим их названия.
Установка статуса записи элементов меню
$args = array(
'menu' => 'main-menu',
'post_status' => 'draft'
);
$menu_items = wp_get_nav_menu_items( $args );
if ( ! empty( $menu_items ) ) {
foreach ( $menu_items as $menu_item ) {
// Выводим название элемента меню
echo $menu_item->title;
}
}
В данном примере мы используем функцию wp_get_nav_menu_items() для получения всех элементов меню навигации с идентификатором «main-menu». Мы также устанавливаем статус записи элементов меню с помощью параметра post_status и устанавливаем его в «draft». Затем мы проверяем, есть ли элементы меню, и если есть, выводим их названия.
Вопросы и ответы
Как получить все элементы меню навигации?
Для получения всех элементов меню навигации в WordPress используется функция wp_get_nav_menu_items(). Она принимает два параметра:
- $menu — ID, слаг, имя или объект меню. Обязательный параметр.
- $args — массив дополнительных аргументов для функции
get_posts(). Необязательный параметр.
Функция возвращает массив элементов меню или false, если элементы не найдены.
$menu_items = wp_get_nav_menu_items( $menu, $args );
if ( $menu_items ) {
foreach ( $menu_items as $menu_item ) {
// Вывод элементов меню
echo $menu_item->title;
}
}
Как отсортировать элементы меню навигации?
Для сортировки элементов меню навигации используются параметры order и orderby в массиве $args. По умолчанию элементы сортируются по полю menu_order в порядке возрастания.
$args = array(
'order' => 'DESC', // Сортировка в обратном порядке
'orderby' => 'title' // Сортировка по заголовку
);
$menu_items = wp_get_nav_menu_items( $menu, $args );
Как изменить тип поста элементов меню навигации?
По умолчанию типом поста элементов меню навигации является nav_menu_item. С помощью параметра post_type в массиве $args можно изменить тип поста.
$args = array(
'post_type' => 'page' // Изменение типа поста на 'page'
);
$menu_items = wp_get_nav_menu_items( $menu, $args );
Как изменить статус поста элементов меню навигации?
Для изменения статуса поста элементов меню навигации используйте параметр post_status при вызове функции wp_get_nav_menu_items(). По умолчанию, статус установлен как ‘publish’.
$menu_items = wp_get_nav_menu_items( $menu, array(
'post_status' => 'draft'
) );
Как изменить порядок вывода элементов меню навигации?
Для изменения порядка вывода элементов меню навигации используйте параметры order и orderby при вызове функции wp_get_nav_menu_items(). По умолчанию, элементы меню сортируются по полю ‘menu_order’ в порядке возрастания.
$menu_items = wp_get_nav_menu_items( $menu, array(
'order' => 'DESC',
'orderby' => 'title'
) );
Как получить все элементы меню без пагинации?
Для получения всех элементов меню без пагинации установите параметр nopaging в значение true при вызове функции wp_get_nav_menu_items(). По умолчанию, параметр установлен как true.
$menu_items = wp_get_nav_menu_items( $menu, array(
'nopaging' => true
) );
Как обновить кэш элементов меню навигации?
Для обновления кэша элементов меню навигации установите параметр update_menu_item_cache в значение false при вызове функции wp_get_nav_menu_items(). По умолчанию, параметр установлен как true.
$menu_items = wp_get_nav_menu_items( $menu, array(
'update_menu_item_cache' => false
) );
Функция
wp_get_nav_menu_items()позволяет получить все элементы меню навигации. Вы можете изменить статус поста элементов меню, изменить порядок вывода элементов, получить все элементы без пагинации и обновить кэш элементов меню навигации, используя соответствующие параметры.
Связанные элементы
- Функция
wp_get_nav_menu_object(): Возвращает объект меню по его ID, имени или слагу. - Функция
wp_nav_menu(): Выводит HTML-код для меню навигации. - Функция
wp_nav_menu_item_post_type_meta_box(): Добавляет метабокс для настройки типа записи элемента меню. - Хук
wp_nav_menu_args: Позволяет изменить аргументы, используемые при выводе меню навигации. - Хук
wp_get_nav_menu_items: Позволяет изменить результаты запроса элементов меню навигации. - Хук
wp_update_nav_menu_item: Позволяет изменить элемент меню навигации перед его обновлением. - Класс
Walker_Nav_Menu: Определяет базовый класс для создания классов-обходчиков меню навигации.