web-dev-qa-db-fra.com

Obtient un objet de menu de theme_location

J'aimerais obtenir un objet de menu à partir de son argument d'emplacement de thème.

Mon objectif est de produire séparément le nom du menu et son nom, son URL et sa description.

Exemple de ce que je cherche:

$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

Cette méthode ressemble à ce que vous recherchez , en utilisant get_nav_menu_locations () et get_term () :

$theme_locations = get_nav_menu_locations();

$menu_obj = get_term( $theme_locations[$theme_location], 'nav_menu' );

$menu_name = $menu_obj->name;

(Voir le lien pour le tout dans une fonction personnalisée; le code ci-dessus ne fait que mettre en évidence les fonctions WP pertinentes pour obtenir ce que vous cherchez.)

13
Chip Bennett

Ou si vous en avez besoin sur une seule ligne, copiez-le et remplacez "change-this-location-slug" par le nôtre.

$string = get_term(get_nav_menu_locations()['change-this-location-slug'], 'nav_menu')->name;
3
user2912903