Cela fait un moment que je lutte avec ça. Je souhaite appeler un menu mais inclure le titre du menu au-dessus de la liste des menus. Le code de base que j'ai est comme suit -
<?php wp_nav_menu( array(
'container' => 'div',
'container_class' => 'rmm-footer',
'theme_location' => 'resources'
));
?>
Cela produit une liste comme suit -
Élément de menu 1 Élément de menu 2 Élément de menu 3
Mais je veux que ça se passe comme suit -
TITRE Elément de menu 1 Elément de menu 2 Elément de menu 3
Quelqu'un a une idée?
Merci d'avance.
Vous ne pouvez pas obtenir le titre du menu en utilisant wp_nav_menu()
, vous devez obtenir l'objet de menu comme suit:
//Change with the ID of your menu
$menu_ID = 5;
$nav_menu = wp_get_nav_menu_object( $menu_ID );
// then echo the name of the menu
echo $nav_menu->name;
Avec le code ci-dessus, vous pouvez insérer le nom du menu dans wp_nav_menu()
en utilisant le paramètre items_wrap
. Par exemple:
$menu_ID = 5;
$nav_menu = wp_get_nav_menu_object( $menu_ID );
wp_nav_menu( array(
'theme_location' => 'resources',
'container' => 'div',
'container_class' => 'rmm-footer',
'items_wrap' => '<ul><li id="item-id">'.$nav_menu->name.'</li>%3$s</ul>'
)
);
Il est préférable de ne pas compter sur le menu Id, ma solution résoudra de manière dynamique le menu joint pour l'emplacement actuel.
1- Nous devons d’abord définir une fonction qui recherche un menu dans notre functions.php:
function monoprog_get_menu_by_location($location) {
if(empty($location)) return false;
$locations = get_nav_menu_locations();
if(!isset($locations[$location])) return false;
return get_term( $locations[$location], 'nav_menu' );
}
2- Ensuite, affichons le titre du menu affiché à n’importe quel endroit souhaité:
$menu_obj = monoprog_get_menu_by_location('menufooterleft');
echo "<h3>".esc_html($menu_obj->name)."</h3>";
il suffit de remplacer ' menufooterleft ' par l'emplacement indiqué dans votre thème.