web-dev-qa-db-fra.com

Appel du titre de menu dans la fonction de tableau wp_nav_menu

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.

4
user3193817

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>'
             )
);
4
cybmeta

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.

0
Chtiwi Malek