Come ottenere il nome dell'elemento del menu corrente invece dell'intera lista
Vorrei creare una struttura di menu dove si vede solo l'elemento del menu relativo alla pagina corrente, come su questo sito web http://www.bigspaceship.com/services/
Ho fatto delle ricerche e per ora ho questa funzione:
<?php
$menu_items = wp_get_nav_menu_items( 'main-menu' );
foreach( $menu_items as $item ) {
print_r( $item ) ; // vedi con cosa puoi lavorare
// continua
}
Come posso effettivamente stampare solo il nome dell'elemento del menu per la pagina corrente? Voglio comunque poter controllare gli elementi del menu dal pannello di controllo, cioè poter cambiare il nome di ogni menu dall'amministrazione e vederli aggiornati dinamicamente.
Grazie per qualsiasi aiuto.
In ogni voce del menu,
object_id
contiene l'ID dell'oggetto a cui si riferisce la voce del menu. Questo può essere l'ID di un articolo, pagina, CPT o termine. Se si tratta di un link personalizzato, l'ID si riferisce alla voce stessa. (Se vuoi sapere che tipo di oggetto è, puoi verificare il campoobject
.)get_queried_object_id()
restituirà l'ID della pagina corrente.Possiamo usare la funzione API
wp_filter_object_list()
per filtrare le voci di menu doveobject_id
non corrisponde all'oggetto corrente.Rimarremo con un array contenente un singolo elemento, quindi usiamo la funzione php
current
in modo che$this_item
contenga solo l'oggetto della voce di menu che corrisponde.Infine,
title
contiene il nome che abbiamo assegnato alla voce del menu.
$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;
Nota: Non ho testato questo codice, spero funzioni!
