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
(по убыванию). Игнорируется, еслиoutput
—ARRAY_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 = '- Меню "' . $menu_name . '" не определено.
';
}
';
} else {
$menu_list = '
Пример 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 = '