web-dev-qa-db-fra.com

Afficher le nom du menu en utilisant wp_nav_menu

J'ai un menu personnalisé que je peux appeler très bien avec 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>
15
csi

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

Ensuite

//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 renvoyer le code HTML, vous pouvez le transmettre avec l'argument de l'attribut items de 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>') ); 
15
Stephen Harris

remplacez l'identifiant 4 ci-dessous par l'identifiant 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;
?>
3
tbradley22

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 auquel vous avez attribué un menu wp. placez maintenant ce code là où vous souhaitez afficher votre menu.

2
nicmare