Come ottenere l'ID dell'elemento di menu attivo (current-menu-item)?

7 giu 2011, 00:20:39
Visualizzazioni: 27.1K
Voti: 3

Sto cercando di ottenere l'ID dell'elemento del menu che ha la classe "current-menu-item". Non l'ID della pagina corrente, ma l'ID dell'elemento di navigazione.

Per favore aiutate

1
Commenti

Una volta ho scoperto come ottenere il titolo dell'elemento di menu corrente, dovresti essere in grado di adattarlo per restituire l'ID invece.

Jan Fabry Jan Fabry
7 giu 2011 01:04:12
Tutte le risposte alla domanda 3
0

Forse un po' in ritardo, ma c'è un altro modo per farlo:

$menu = wp_get_nav_menu_items($menu_id,array(
   'posts_per_page' => -1,
   'meta_key' => '_menu_item_object_id',
   'meta_value' => $post->ID // il post attualmente visualizzato
));

var_dump($menu[0]->ID);

Poiché gli elementi del menu sono post-type, puoi utilizzare tutti i parametri di WP-Query, persino una meta query. Il codice sopra seleziona tutti gli menu_items collegati al post corrente, dal menu specificato tramite $menu_id.

23 nov 2012 10:28:11
0

Questo dovrebbe risolverlo Come ottenere il titolo del current-menu-item come variabile?

ma modifica

$GLOBALS['wpse16243_title'] = $menu_item->title;

in

$GLOBALS['wpse16243_title'] = $menu_item->ID;

e ora puoi usare la variabile globale $wpse16243_title per ottenere l'ID

7 giu 2011 12:15:26
3

Il modo migliore sarebbe utilizzare il filtro nav_menu_css_class. Qualcosa come questo funzionerebbe:

function wpse19375_nav_class( $classes, $item ){
  if( !in_array( 'current-menu-item', $classes ) )
    return $classes;
  // $item è un oggetto 'current-menu-item'.
  return $classes;
}

add_filter( 'nav_menu_css_class', 'wpse19375_nav_class', 10, 2 );
7 giu 2011 00:53:08
Commenti

grazie amico, ma non capisco come questo porterà l'id

Leroy Leroy
7 giu 2011 12:08:51

La variabile $item è l'oggetto del menu. Contiene tutte le informazioni che potresti volere, incluso l'ID.

John P Bloch John P Bloch
7 giu 2011 13:55:48

@John P Bloch, Ma a cosa stai restituendo $classes?

Steven Steven
15 ago 2011 23:07:11