wp_get_nav_menu_items() — позволяет получить элементы меню в виде объектов

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

Получает массив объектов элементов меню. Если меню не содержит элементов, возвращает пустой массив, либо false, если указанного меню не существует.

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

wp_get_nav_menu_items( $menu, $args = array() )
$menu
(строка) Можно указать ID, ярлык или название меню, элементы которого нужно будет получить. Не указывайте здесь области темы.
$args
(массив) Дополнительные параметры вывода. По умолчанию принимает следующие значения:

$args = array(
	'nopaging'               => true,
	'post_type'              => 'nav_menu_item',
	'post_status'            => 'publish',
	'order'                  => 'ASC',
	'orderby'                => 'menu_order',
	'output'                 => ARRAY_A,
	'output_key'             => 'menu_order',
 	'update_post_term_cache' => false
);
$args = array(
	'nopaging'               => true,
	'post_type'              => 'nav_menu_item',
	'post_status'            => 'publish',
	'order'                  => 'ASC',
	'orderby'                => 'menu_order',
	'output'                 => ARRAY_A,
	'output_key'             => 'menu_order',
 	'update_post_term_cache' => false
);

Функция возвращает массив объектов элементов меню. Например вот пример объекта для ссылки на главную страницу:

WP_Post Object
(
 	[ID] => 5861
	[post_author] => 1
	[post_date] => 2014-07-20 07:54:11
	[post_date_gmt] => 2014-07-20 03:54:11
	[post_content] => 
	[post_title] => Главная
	[post_excerpt] => 
	[post_status] => publish
	[comment_status] => open
	[ping_status] => open
	[post_password] => 
	[post_name] => %d0%b3%d0%bb%d0%b0%d0%b2%d0%bd%d0%b0%d1%8f
	[to_ping] => 
	[pinged] => 
	[post_modified] => 2014-07-23 07:39:24
	[post_modified_gmt] => 2014-07-23 03:39:24
	[post_content_filtered] => 
	[post_parent] => 0
	[guid] => https://misha.agency/?p=5861
	[menu_order] => 1
	[post_type] => nav_menu_item
	[post_mime_type] => 
	[comment_count] => 0
	[filter] => raw
	[post_category] => 0
	[post_icon] => 
	[db_id] => 5861
	[menu_item_parent] => 0
	[object_id] => 5861
	[object] => custom
	[type] => custom
	[type_label] => Произвольно
	[title] => Главная
	[url] => https://misha.agency
	[target] => 
	[attr_title] => 
	[description] => 
	[classes] => Array
		(
			[0] => 
		)
 
	[xfn] => 
)

Пример. Выводим меню в виде ссылок.

Обычно меню в WordPress всегда выводятся в виде маркированного <ul>-списка. Это удобно, но не всегда бывает нужно. Давайте посмотрим, как можно вывести меню просто в виде ссылок.

if( $menu_items = wp_get_nav_menu_items('Меню для шапки') ) { // "Меню для шапки" - это название моего меню. Вы можете также использовать ID или ярлык
	$menu_list = '';
	foreach ( (array) $menu_items as $key => $menu_item ) {
		$title = $menu_item->title; // заголовок элемента меню (анкор ссылки)
		$url = $menu_item->url; // URL ссылки
		$menu_list .= '<a href="' . $url . '">' . $title . '</a>';
	}
	echo $menu_list;
}

Вот и всё, осталось только добавить к новому меню немного CSS-стилей.

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии