Как получить название текущего пункта меню вместо полного списка элементов меню
Я хочу создать структуру меню, где будет виден только пункт меню текущей страницы, как на этом сайте http://www.bigspaceship.com/services/
После поиска у меня есть следующая функция:
<?php
$menu_items = wp_get_nav_menu_items( 'main-menu' );
foreach( $menu_items as $item ) {
print_r( $item ) ; // посмотрим, с чем можно работать
// продолжаем
}
Как я могу вывести только название пункта меню для текущей страницы? Я хочу сохранить возможность управления пунктами меню через админ-панель, то есть иметь возможность изменять названия пунктов в админке и видеть их динамическое обновление.
Спасибо за любую помощь.
В каждом элементе меню
object_id
содержит ID объекта, на который ссылается пункт меню. Это может быть ID записи, страницы, произвольного типа записи (CPT) или термина. Если это пользовательская ссылка, ID ссылается на сам элемент. (Если нужно узнать тип объекта, используйте полеobject
.)get_queried_object_id()
возвращает ID текущей страницы.Мы можем использовать API-функцию
wp_filter_object_list()
для фильтрации пунктов меню, гдеobject_id
не совпадает с текущим объектом.В результате останется массив с одним элементом, поэтому используем php-функцию
current
, чтобы переменная$this_item
содержала только соответствующий объект пункта меню.И наконец,
title
содержит название, которое мы дали пункту меню.
$menu_items = wp_get_nav_menu_items( 'main-menu' );
$this_item = current( wp_filter_object_list( $menu_items, array( 'object_id' => get_queried_object_id() ) ) );
echo $this_item->title;
Примечание: я не тестировал этот код, но надеюсь, он работает!
