wp_get_nav_menu_items()
Отримує елементи меню навігації у вигляді масиву, який можна обробити.
Повертає всі елементи (посилання) вказаного меню навігації, яке створюється на панелі: Внешний вид > Меню
.
Передавши назву, ID або склад меню, функція отримає елементи меню навігації.
wp_get_nav_menu_object()
(гальмо) | 50000 разів – 124.89 сек
(гальмо) |
PHP 7.1.2, WP 4.7.3
Хуки з функції
Повертає
Массив|false
. Масив даних про посилання. False, коли немає меню.
Шаблон використання
$items = wp_get_nav_menu_items( 5, [ 'output_key' => 'menu_order', ]);
Використання
wp_get_nav_menu_items($menu, $args);
-
$menu
(рядок/об’єкт) (обов’язковий) -
ID меню або об’єкт меню (термін).
Ідентифікатор, який задається під час реєстрації меню (menu location) — не можна вказувати. -
$args
(масив) Аргументи у вигляді масиву, які формують дані, що виводяться.
За замовчуванням: дефолтні параметри
$order (рядок)
Напрямок сортування: ASC або DESC . Це параметр сортування для запиту get_posts() .
За замовчуванням: ‘ASC’$orderby (рядок)
Поле, за яким сортувати. Це параметр для запиту get_posts() .
Додаткове поле за яким сортувати можна вказати в параметрі ‘output_key’ . Докладніше читайте у параметрі $output_key .
За замовчуванням: ‘menu_order’$output (рядок)
В якому вигляді потрібно отримати елементи.При ARRAY_A до кожного елемента меню (об’єкту) додати ще одну властивість (поле сортування). Назва властивості, що додається, вказується в параметрі $output_key . У значенні нової якості буде число – порядковий номер елемента меню. Також елементи меню будуть відсортовані за допомогою функції wp_list_sort() , по полю $output_key з напрямком ASC. І порядковий номер елемента меню додається до об’єкта елемента в нову властивість $item->$output_key
За замовчуванням: ARRAY_A$output_key (рядок)
Ключ (поле) яким сортувати елементи меню. Цей ключ не використовується в get_posts() , а працює лише в цій функції.
За замовчуванням: ‘menu_order’$post_type (рядок)
Тип запису, в якому зберігаються елементи меню.
За замовчуванням: ‘nav_menu_item’$post_status (рядок)
Статус запису, в якому зберігаються елементи меню.
Типово: ‘publish’- $nopaging (true/false)
Виймати всі пункти меню (true) або розбивати на сторінки (false).
Типово: true
Приклади
#1 Приклад побудови простого списку меню
// Отримаємо елементи меню на основі параметра $menu_name (теж що 'theme_location' або 'menu' в аргументах wp_nav_menu) // Цей код - основа функції wp_nav_menu, де виходить ID меню зі складу $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 = '<ul id="menu-' . $menu_name . '">'; foreach ((array) $menu_items as $key => $menu_item ){ $menu_list .= '<li><a href="' . $menu_item->url . '">' . $menu_item->title . '</a></li>'; } $menu_list .= '</ul>'; } else { $menu_list = '<ul><li>Меню "' . $menu_name . '" не визначено.</li></ul>'; }
#2 Які дані містить об’єкт, що повертається
Не має значення, яке посилання додано в меню в адмінці: пост, таксономія або довільне посилання. Усі вони зберігаються у таблиці wp_posts з однаковими полями (поля меню).
Багато полів просто не потрібні і не мають сенсу, тому що ставляться до записів. Використовуйте останні значення з db_id
вони визначають пункт меню.
$items = wp_get_nav_menu_items(654); print_r ($ items); /* виведе: Array ( [1] => WP_Post Object ( // це поля посту використовувати їх не універсально. [ID] => 6364 [post_author] => 1 [post_date] => 2015-12-06 12:20:18 [post_date_gmt] => 2015-12-06 07:20:18 [post_content] => [post_title] => Довільне посилання 2 [post_excerpt] => [post_status] => publish [comment_status] => closed [ping_status] => closed [post_password] => [post_name] => proizvolnaya-sylka-2 [to_ping] => [pinged] => [post_modified] => 2015-12-06 12:20:18 [post_modified_gmt] => 2015-12-06 07:20:18 [post_content_filtered] => [post_parent] => 0 [guid] => http://wp-kama.ru/id_6364/proizvolnaya-ssylka-2.html [menu_order] => 4 [post_type] => nav_menu_item [post_mime_type] => [comment_count] => 0 [filter] => raw // це поля меню, використовуйте їх [db_id] => 6364 [menu_item_parent] => 0 [object_id] => 6364 [object] => custom [type] => custom [type_label] => Довільне посилання [title] => Довільне посилання 2 [url] => http://example.com/foo [target] => [attr_title] => [description] => [classes] => Array ( [0] => ) [xfn] => ) [1] => WP_Post Object ( ... ) ) */
список змін
З версії 3.0.0 | Введено. |