Visualizza il nome del menu usando wp_nav_menu


17

Ho un menu personalizzato che posso chiamare bene usando wp_nav_menu. C'è un modo per visualizzare il nome del menu all'interno di un tag h3 prima del menu?

Ex.

<h3>My Menu Name</h3>
<nav>
<ul>
<li>Menu Item 1</li>
<li>Menu Item 2</li>
</ul>
</nav>

Risposte:


15

Se conosci la lumaca del menu, allora le cose sono più facili, altrimenti puoi usare questa funzione per ottenere il menu in una posizione specifica.

<?php
function wpse45700_get_menu_by_location( $location ) {
    if( empty($location) ) return false;

    $locations = get_nav_menu_locations();
    if( ! isset( $locations[$location] ) ) return false;

    $menu_obj = get_term( $locations[$location], 'nav_menu' );

    return $menu_obj;
}
?>

Poi

//if you after the menu the menu with a specific ID / Slug
//$menu_obj =wp_get_nav_menu_object($id_slug_or_name); 

//if you after the menu at a specific location
$menu_obj = wpse45700_get_menu_by_location($location); 

echo "<h3>".esc_html($menu_obj->name)."</h3>";
//Display menu here

Oppure, anziché fare eco all'html, è possibile passarlo come parte dell'argomento per l'attributo items in wp_nav_menu.

Ad esempio, per visualizzare il menu nella posizione "principale":

$location = 'primary';
$menu_obj = wpse45700_get_menu_by_location($location ); 
wp_nav_menu( array('theme_location' => $location, 'items_wrap'=> '<h3>'.esc_html($menu_obj->name).'</h3><ul id=\"%1$s\" class=\"%2$s\">%3$s</ul>') ); 

1
Stephen, grazie per l'ottima risposta. Mi dispiace essere un noob, ma potresti fornire il codice per passare l'html come argomento. Ciò risolverebbe tutto. Grazie!
csi,

Vedi risposta aggiornata: D
Stephen Harris,

4

sostituisci l'id 4 di seguito con l'id del tuo menu. se non si conosce l'id, accedere alla pagina dei menu dell'amministratore, fare clic con il tasto destro sulla scheda del menu per cui si desidera echeggiare il titolo, ispezionare elemenent e l'id verrà elencato come menu = ID nel collegamento.

<?
$_menu_object = wp_get_nav_menu_object( 4 );
$nav_menu_selected_title = $_menu_object->name;
echo $nav_menu_selected_title;
?>

2

la risposta di Stephen è buona. ma lo metto un ulteriore passo avanti:

<?php 
$location = 'footer_navigation3';
if (has_nav_menu($location)) :
    $menu_obj = get_menu_by_location($location); 
    wp_nav_menu( array( 
        'theme_location'  => $location,
        'items_wrap'=> '<strong>'.esc_html($menu_obj->name).'</strong><ul id="%1$s" class="%2$s">%3$s</ul>'
    )); 
endif;
?>

supponendo che abbiate registrato un percorso tematico chiamato "footer_navigation3" e che vi sia stato assegnato un menu wp. ora posiziona questo codice ovunque tu voglia visualizzare il tuo menu.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.