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

Получает массив объектов элементов меню. Если меню не содержит элементов, возвращает пустой массив, либо 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
);

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

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://truemisha.ru/?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://truemisha.ru
	[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-стилей.

Комментарии 1

  • Антон11 апреля 2015 в 22:04 #

    Спасибо за статью. Очень помогла!
    Весь день промаялся и вот у вас нашел решение. :)

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Владимир: и на третьей строке не хватает скобки ) закрывающей if :)

  • Миша: Добрый вечер! Рекомендую получить ID пользователя через функцию get_current_user_id().

  • Дмитрий: Миша, подскажите пожалуйста, я использую такой редирект, но он не срабатывает: add_action( 'template_redirect', funct...

  • Миша: Ну как не определена - это аргумент функции. Или я просто вас не до конца понимаю.

  • Артем: Ага, понял. Вот только почему $args? Она же нигде не определена, по логике должна быть переменная $true_field_params или...