Afficher le nom du menu à l'aide de wp_nav_menu


17

J'ai un menu personnalisé que je peux appeler très bien en utilisant wp_nav_menu. Existe-t-il un moyen 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>

Réponses:


15

Si vous connaissez le slug du menu, alors les choses sont plus faciles, sinon vous pouvez utiliser cette fonction pour obtenir 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 HTML, vous pouvez le passer dans le cadre de l'argument de l'attribut items dans wp_nav_menu.

Par exemple, pour afficher le menu à l'emplacement «principal»:

$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, merci pour l'excellente réponse. Désolé d'être un noob mais pourriez-vous fournir du code pour passer le html en argument. Cela résoudrait tout. Merci!
csi

Voir la réponse mise à jour: D
Stephen Harris

4

remplacez l'id 4 ci-dessous par l'id de votre menu. si vous ne connaissez pas l'identifiant, accédez à la page des menus de l'administrateur, faites un clic droit sur l'onglet du menu pour lequel vous souhaitez faire écho au titre, inspectez elemenent et l'identifiant sera répertorié comme 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;
?>

2

la réponse de stephen est bonne. mais je vais 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 avez enregistré un emplacement de thème appelé "footer_navigation3" et auquel vous avez attribué un menu wp. placez maintenant ce code là où vous voulez afficher votre menu.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.