Как получить название текущего пункта меню вместо полного списка элементов меню

14 сент. 2015 г., 07:18:43
Просмотры: 18.2K
Голосов: 1

Я хочу создать структуру меню, где будет виден только пункт меню текущей страницы, как на этом сайте http://www.bigspaceship.com/services/

После поиска у меня есть следующая функция:

<?php
$menu_items = wp_get_nav_menu_items( 'main-menu' );
foreach( $menu_items as $item ) {
  print_r( $item ) ; // посмотрим, с чем можно работать
  // продолжаем
}

Как я могу вывести только название пункта меню для текущей страницы? Я хочу сохранить возможность управления пунктами меню через админ-панель, то есть иметь возможность изменять названия пунктов в админке и видеть их динамическое обновление.

Спасибо за любую помощь.

0
Все ответы на вопрос 1
2
  1. В каждом элементе меню object_id содержит ID объекта, на который ссылается пункт меню. Это может быть ID записи, страницы, произвольного типа записи (CPT) или термина. Если это пользовательская ссылка, ID ссылается на сам элемент. (Если нужно узнать тип объекта, используйте поле object.)

  2. get_queried_object_id() возвращает ID текущей страницы.

  3. Мы можем использовать API-функцию wp_filter_object_list() для фильтрации пунктов меню, где object_id не совпадает с текущим объектом.

  4. В результате останется массив с одним элементом, поэтому используем php-функцию current, чтобы переменная $this_item содержала только соответствующий объект пункта меню.

  5. И наконец, 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;

Примечание: я не тестировал этот код, но надеюсь, он работает!

14 сент. 2015 г. 07:50:24
Комментарии

Комментарий: Это действительно работает

Felix Felix
20 янв. 2017 г. 17:39:45

Что делать, если текущая страница - это архив?

Mithc Mithc
11 июл. 2018 г. 20:34:17