Gérer les menus

Voir la vidéo
Description Sommaire

Nous allons maintenant voir comment gérer les menu de notre thème. Il est possible depuis le thème de définir plusieurs emplacements de menu qui seront ensuite utilisés par l'administrateur du site. L'enregistrement se fait au travers de la fonction register_nav_menu :

function montheme_supports()
{
    register_nav_menu('header', 'En tête du menu');
    register_nav_menu('footer', 'Pied de page');
}

add_action('after_setup_theme', 'montheme_supports');

Il est ensuite possible d'afficher le menu correspondant à un emplacement à l'aide de la fonction wp_nav_menu().

wp_nav_menu([
   'theme_location' => 'header',
   'container' => false,
   'menu_class' => 'navbar-nav mr-auto'
])

Le paramètre important est ici theme_location et fait référence à l'option spécifiée lors de l'enregistrement du menu. Il est aussi possible de personnaliser un peu plus la génération du menu à l'aide de différents filtres.

function montheme_menu_class($classes)
{
    $classes[] = 'nav-item';
    return $classes;
}

function montheme_menu_link_class($attrs)
{
    $attrs['class'] = 'nav-link';
    return $attrs;
}
add_filter('nav_menu_css_class', 'montheme_menu_class');
add_filter('nav_menu_link_attributes', 'montheme_menu_link_class');

En revanche, si votre structure HTML ne respecte pas celle générée par WordPress il faudra utiliser une classe WalkerNavMenu plus complexe que l'on traitera plus tard.

Publié
Technologies utilisées
Auteur :
Grafikart
Partager