Créer un menu dans WordPress ne suffit pas à le faire apparaître quelque part sur le site : encore faut-il l’assigner à un emplacement précis, défini par le thème actif. Un thème peut ainsi proposer un emplacement « Menu principal » dans l’en-tête, un autre « Menu du pied de page », et parfois un troisième dédié à la navigation mobile.
Déclaration côté thème
Un thème classique déclare ses emplacements dans functions.php avec register_nav_menus(), puis les appelle dans ses gabarits avec wp_nav_menu() en précisant le paramètre theme_location. Un thème bloc, lui, s’appuie plutôt sur le bloc Navigation inséré directement dans les parties de gabarit d’en-tête ou de pied de page, sans nécessiter cette déclaration explicite.
Exemple pour un thème classique
register_nav_menus( array(
'principal' => __( 'Menu principal', 'mon-theme' ),
'pied' => __( 'Menu du pied de page', 'mon-theme' ),
) );
Pièges fréquents
- Changer de thème réinitialise souvent les emplacements de menu : un menu affecté à « Menu principal » sur l’ancien thème peut se retrouver non assigné après l’activation du nouveau, sauf correspondance automatique des noms.
- Un emplacement de menu n’est pas une zone de widgets : le premier n’accepte qu’un menu de navigation, la seconde accepte n’importe quel widget ou bloc.
- Un thème qui ne déclare aucun emplacement de menu classique empêche tout simplement d’assigner un menu créé dans « Apparence > Menus », même si celui-ci existe déjà.