Получить объект меню из theme_location

Я хотел бы получить объект меню из его аргумента location темы.

Моя цель состоит в том, чтобы отдельно выводить имя меню и его имя, URL и описание.

Пример того, что я ищу:

$menu = get_menu('nav-menu'); //get menu from its theme location
echo $menu->name; //displays the menu name
foreach($menu->items as $item){
    echo '<a href="'.$item->link'">'.$item->name.'</a>'; //displays a link to the item destination
    echo $item->description; //displays the item description
}
6 голосов | спросил Morhaus 25 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 25 Sep 2011 22:42:21 +0400 2011, 22:42:21

2 ответа


11

Этот метод похож на то, что вы ищете , используя 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;

(см. ссылку для всего, что завершено в пользовательской функции; приведенный выше код просто подчеркивает соответствующие функции WP для получения того, что вы после.)

ответил Chip Bennett 25 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 25 Sep 2011 23:02:28 +0400 2011, 23:02:28
2

Или, если вам это нужно в одной строке, просто скопируйте это и замените «change-this-location-slug» на свой собственный.

$string = get_term(get_nav_menu_locations()['change-this-location-slug'], 'nav_menu')->name;
ответил user2912903 24 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 24 Sep 2016 19:35:58 +0300 2016, 19:35:58

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132