Получение объекта меню из theme_location
25 сент. 2011 г., 21:42:21
Просмотры: 24.6K
Голосов: 10
Я хочу получить объект меню используя его аргумент theme_location.
Моя цель - отдельно вывести название меню, а также названия его элементов, URL и описания.
Пример того, что я ищу:
$menu = get_menu('nav-menu'); // получаем меню по его расположению в теме
echo $menu->name; // выводит название меню
foreach($menu->items as $item){
echo '<a href="'.$item->link'">'.$item->name.'</a>'; // выводит ссылку на целевую страницу элемента
echo $item->description; // выводит описание элемента
}
Все ответы на вопрос
3
0
Этот метод, похоже, то, что вам нужно, используя get_nav_menu_locations() и get_term():
$theme_locations = get_nav_menu_locations();
$menu_obj = get_term( $theme_locations[$theme_location], 'nav_menu' );
$menu_name = $menu_obj->name;
(Смотрите ссылку для полной реализации в виде пользовательской функции; приведенный выше код просто выделяет соответствующие функции WordPress для получения нужного вам результата.)

Chip Bennett
55.1K
25 сент. 2011 г. 22:02:28
0
Начиная с WordPress 3.0.0 вы можете использовать функцию wp_get_nav_menu_object
для получения соответствующего объекта WP_Term
, чтобы извлечь его название.
Получение ID меню для передачи в wp_get_nav_menu_object
может быть выполнено с помощью функции get_nav_menu_locations
.
Расширяя ваш пример:
$menu_id = get_nav_menu_locations()[ 'nav-menu' ];
$menu = wp_get_nav_menu_object( $menu_id );
$items = wp_get_nav_menu_items( $menu_id );
echo $menu->name; // Выводит название меню.
foreach($items as $item){
echo '<a href="'. esc_url( $item->url )'">'. esc_html( $item->title ).'</a>'; // Выводит ссылку на пункт меню.
echo $item->description; // Выводит описание пункта меню.
}

Mat Lipe
319
15 авг. 2022 г. 18:17:11
Похожие вопросы
1
ответов
8
ответов