Avec WordPress 3.0, une nouvelle fonctionnalité apparaît : les menus. Fini la gestion laborieuse des headers pour ajouter en plein milieux d’une liste de catégorie une nouvelle page afin d’agréer aux désidératas absurdes de votre client. WordPress permet désormais de gérer vos menus via une interface intuitive et ergonomique. Que du bonheur !

Comment faire :

Tout d’abord, déclarez dans votre fichier functions.php que votre thème gère les menus :

add_theme_support('menus');

Un nouvel item “Menus” apparaît alors dans l’admin de WordPress, dans l’onglet “Apparence”. Vous pouvez dès lors créer en toute simplicité autant de menus que vous le souhaitez, en glissant/déposant catégories, pages ou liens externes.

Ces menus, une fois créés, peuvent être ajoutés dans une sidebar en temps que widgets (pour créer une ou plusieurs sidebar, voir l’article Utiliser et configurer plusieurs sidebar dans votre thème WordPress).

Décaler un item permet de faire des sous-catégories

Vous pouvez également insérer ces menus directement dans votre template :

<?php wp_nav_menu(array('menu'=>'le nom de mon menu')); ?>

Mais l’idéal reste de définir des emplacements de menus que l’utilisateur remplira ensuite à sa guise. Pour se faire, retournez dans votre fichier functions.php et ajoutez :

function addmenus() {
	register_nav_menu('menu1','Nom du premier menu');
	register_nav_menu('menu2','Nom du second menu');
	register_nav_menu('menu3','Nom du troisième menu');
	register_nav_menu('menu4','etc...');
}
add_action('init', 'addmenus');

Puis appelez ces menus dans votre template de la manière suivante :

<?php wp_nav_menu(array('theme_location'=>'menu1')); ?>

L’utilisateur pourra ainsi créer lui-même ses menus, puis les placer dans l’un des emplacements que vous aurez ainsi prédéfini.

Vous pouvez affiner l’affichage de vos menus grâce à la liste d’options ci-dessous, à ajouter dans le tableau passé en argument de la fonction wp_nav_menu().

<?php
/* options par défaut */
$defaults = array(
  'menu'            => ,
  'container'       => 'div',
  'container_class' => ,
  'container_id'    => ,
  'menu_class'      => 'menu',
  'menu_id'         => ,
  'echo'            => true,
  'fallback_cb'     => 'wp_page_menu',
  'before'          => ,
  'after'           => ,
  'link_before'     => ,
  'link_after'      => ,
  'depth'           => 0,
  'walker'          => ,
  'theme_location'  => );
?>

Pour plus d’information, voir le codex, ou cet excellent article (en anglais) de Justin Tadlock.

2 commentaires

  • Olivia (1 comments), le 4 février 2013

    Grâce à vos explications très explicites *ironie*, j’ai reçu un message d’erreur:

    Fatal error: Call to undefined function add_theme_support() in /home/u484353675/public_html/wp-content/themes/yield-theme/functions.php on line 8

    Est-ce possible à réparer ? Je n’y arrive pas moi-même.

  • George (169 comments), le 4 février 2013

    Bonjour,

    Le support des menus a été introduit dans la version 3.0 de WordPress si ma mémoire est bonne.
    Votre version de WordPress est-elle à jour ?
    Ceci pourrait expliquer cela…

    Bien cordialement.

Poster un commentaire

Subscribe without commenting