Ottenere l'oggetto menu dalla theme_location
25 set 2011, 21:42:21
Visualizzazioni: 24.6K
Voti: 10
Vorrei ottenere un oggetto menu dal suo argomento theme_location.
Il mio obiettivo è visualizzare separatamente il nome del menu e i nomi dei suoi elementi, URL e descrizione.
Esempio di ciò che sto cercando:
$menu = get_menu('nav-menu'); //ottiene il menu dalla sua theme_location
echo $menu->name; //mostra il nome del menu
foreach($menu->items as $item){
echo '<a href="'.$item->link'">'.$item->name.'</a>'; //mostra un link alla destinazione dell'elemento
echo $item->description; //mostra la descrizione dell'elemento
}
Tutte le risposte alla domanda
3
0
Questo metodo sembra essere quello che stai cercando, utilizzando get_nav_menu_locations() e get_term():
// Ottieni le posizioni dei menu definite dal tema
$theme_locations = get_nav_menu_locations();
// Ottieni l'oggetto del menu in base alla posizione specificata
$menu_obj = get_term( $theme_locations[$theme_location], 'nav_menu' );
// Estrai il nome del menu
$menu_name = $menu_obj->name;
(Vedi il link per la funzione completa; il codice sopra evidenzia solo le funzioni rilevanti di WordPress per ottenere ciò che ti serve.)

Chip Bennett
55.1K
25 set 2011 22:02:28
0
A partire da WordPress 3.0.0 puoi utilizzare la funzione wp_get_nav_menu_object
per recuperare il corrispondente oggetto WP_Term
e ottenere il suo nome.
Per recuperare l'ID del menu da passare a wp_get_nav_menu_object
puoi usare la funzione get_nav_menu_locations
.
Espandendo il tuo esempio:
$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; // Mostra il nome del menu.
foreach($items as $item){
echo '<a href="'. esc_url( $item->url )'">'. esc_html( $item->title ).'</a>'; // Mostra un link alla destinazione dell'elemento.
echo $item->description; // Mostra la descrizione dell'elemento.
}

Mat Lipe
319
15 ago 2022 18:17:11
Domande correlate
1
risposte
2
risposte
8
risposte