Introduction
Les bases
Les plugins incontournables
Travaux pratiques
Installation et configuration du projetRéservé aux membres premiums
16 min
En tête et pied de pageRéservé aux membres premiums
42 min
La page actualitésRéservé aux membres premiums
36 min
La single actualitéRéservé aux membres premiums
56 min
Gestion des biensRéservé aux membres premiums
25 min
Single d'un bienRéservé aux membres premiums
26 min
Listing des biensRéservé aux membres premiums
26 min
Correction du menuRéservé aux membres premiums
10 min
Recherche des biensRéservé aux membres premiums
24 min
Page d'accueilRéservé aux membres premiums
55 min
Formulaire de contactRéservé aux membres premiums
19 min

Nous allons maintenant voir comment gérer les menu de notre thème. Il est possible depuis le thème de définir plusieurs emplacement 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é 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 utilise une class WalkerNavMenu plus complexe que l'on traitera plus tard.