Thème personnalisé WordPress – le menu ne s’affiche pas lorsqu’il est appelé dans footer.php

Publié par Jean-Michel le

J’essaie de créer un thème de site Web personnalisé pour WordPress et j’ai rencontré un petit problème. J’utilise deux menus absolument identiques dans ma partie en-tête et pied de page du site Web.

Appel

wp_nav_menu(array('theme_location' => 'header'));

dans header.php fonctionne bien, le menu s’imprime sans aucun problème, mais si je fais la même chose dans mon fichier footer.php, le menu ne s’imprime pas et var_dump(wp_nav_menu(array('theme_location' => 'header')));imprime false.

J’ai essayé quelques solutions de contournement que j’ai trouvées sur Google en modifiant le fichier functions.php, mais aucune d’entre elles ne m’a aidé à résoudre ce problème. Mon fichier functions.php se compose maintenant d’une seule ligne

register_nav_menus( array( 'header' => 'Header menu', 'footer' => 'Footer menu' ) );

et oui, j’ai essayé d’utiliser

wp_nav_menu(array('theme_location' => 'footer'))

ainsi, avec le même résultat. Si j’appelle la même fonction depuis header.php

wp_nav_menu(array('theme_location' => 'footer'))

le menu fonctionne bien.

Solution n°1 trouvée

Vous avez correctement enregistré vos deux menus de navigation. Je le fais toujours dans mon crochet de configuration de thème initial qui est accroché au after_setup_themecrochet. Donc je ferais quelque chose comme ça dans votre functions.php :

function pietergoosen_theme_setup() {
  register_nav_menus( array(
    'header' => 'Header menu',
    'footer' => 'Footer menu'
  ) );
 }

add_action( 'after_setup_theme', 'pietergoosen_theme_setup' );

Gardez à l’esprit que vous n’êtes pas obligé de le faire de cette façon. Ce qui suit fonctionne également

register_nav_menus( array(
        'header' => 'Header menu',
        'footer' => 'Footer menu'
      ) );

Vous devriez maintenant voir les deux menus dans le backend sous « Apparence > Menus > Gérer les emplacements » (Seulement si un menu existe)

Capture d'écran des menus

Pour le menu du pied de page, ajoutez le code suivant dans votre pied de page où vous devez afficher le menu :

<nav id="footer-navigation" class="site-navigation footer-navigation" role="navigation">
       <?php wp_nav_menu( array( 'theme_location' => 'footer', 'menu_class' => 'nav-menu', 'fallback_cb' => false ) ); ?>
</nav>

À ce stade, rien ne sera affiché, et je pense que c’est là que vous êtes également bloqué. La raison en est qu’aucun élément n’est affecté au menu, et s’il n’y a rien d’affecté à un menu, alors rien ne sera affiché. Nous devons donc insérer quelque chose à afficher.

Dans le backend, allez dans « Apparence > Menus > Modifier les menus ». Dans le champ « Nom du menu », entrez un nom pour votre menu et cliquez sur « Créer un menu ». Vous pourrez maintenant ajouter le menu dans l’écran de menu.

Capture d'écran du menu

Vous pouvez maintenant choisir des éléments du côté gauche à insérer dans votre menu. Vous pouvez également définir l’emplacement du menu, dans ce cas dans le pied de page. J’ai choisi d’afficher les catégories dans le pied de page. Cliquez sur « Enregistrer le menu » lorsque vous avez terminé.

Capture d'écran des menus enregistrés

Vous devriez maintenant voir votre menu de navigation dans le front-end.

Capture d'écran du menu du pied de page

Il ne vous reste plus qu’à ajouter du style à votre barre de navigation maintenant. Vous ferez exactement la même chose pour le menu de navigation de l’en-tête, acceptez que vous ajouterez l’appel au menu dans le header.php. J’espère que vous trouverez cela utile.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *