Afficher le nom du menu à l'aide de wp_nav_menu

14

J'ai un menu personnalisé que je peux facilement appeler à l'aide de wp_nav_menu. Est-il possible d’afficher le nom du menu dans une balise h3 avant le menu?

Ex.

<h3>My Menu Name</h3>
<nav>
<ul>
<li>Menu Item 1</li>
<li>Menu Item 2</li>
</ul>
</nav>
    
posée csi 15.03.2012 - 18:19

3 réponses

15

Si vous connaissez le slug du menu, les choses sont plus simples, sinon vous pouvez utiliser cette fonction pour afficher le menu à un emplacement spécifié.

<?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;
}
?>

Alors

//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

Ou, plutôt que de faire écho au code HTML, vous pouvez le passer avec l'argument de l'attribut items dans wp_nav_menu .

Par exemple, pour afficher le menu à l'emplacement 'primaire':

$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>') ); 
    
réponse donnée Stephen Harris 15.03.2012 - 18:56
2

remplacez l'id 4 ci-dessous par l'id de votre menu. si vous ne connaissez pas l'identifiant, allez dans la page des menus de l'administrateur, cliquez avec le bouton droit de la souris sur l'onglet du menu pour lequel vous souhaitez afficher le titre, inspectez elemenent et l'identifiant apparaîtra sous la forme menu = ID dans le lien.

<?
$_menu_object = wp_get_nav_menu_object( 4 );
$nav_menu_selected_title = $_menu_object->name;
echo $nav_menu_selected_title;
?>
    
réponse donnée tbradley22 06.03.2013 - 21:23
2

la réponse de Stephen est bonne. mais je le mets un peu plus loin:

<?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;
?>

En supposant que vous ayez enregistré un emplacement de thème appelé "footer_navigation3" et que vous y ayez attribué un menu wp. placez maintenant ce code là où vous souhaitez afficher votre menu.

    
réponse donnée nicmare 25.07.2015 - 13:20

Lire d'autres questions sur les étiquettes