La création de menus personnalisés est désormais possible avec la sortie de WordPress 3.0. Via un système de glisser / déposer, réalisez vos propres menus en combinant des liens externes, des catégories ou encore des pages en quelques clics.
Pour disposer de cette nouvelle fonctionnalité, vous devez avoir effectué la mise à niveau vers WordPress 3.0.
Je vous y encourage vivement tant les nouveautés sont impressionnantes… et du fait qu’il s’agit d’une mise à jour de branche.
La gestion des menus s’opère directement depuis le menu Apparence de votre administration WordPress. Avec le nouveau TwentyTen, vous pouvez d’ores et déjà vous entraînez à concevoir vos barres de navigations sur-mesure.
Le problème majeur est que la plupart des thèmes n’intègrent pas de ce genre de menus par défaut.
C’est pourquoi, nous allons voir ensemble comment disposer de cette nouvelle fonctionnalité de WordPress 3.0 via ce tutoriel pas à pas.
Commencez par ouvrir le fichier header.php de votre thème, soit en passant par le module Éditeur de WordPress, soit en utilisant un éditeur de texte depuis Windows ou MacOS X – par exemple, Coda.
Il nous faut à présent localiser un emplacement pour positionner notre menu. C’est ici la première difficulté du tutoriel. Vous devez savoir à quoi correspondent les différents éléments du code source.
En vous aidant de l’extension Firebug pour Mozilla Firefox et en suivant ce podcast vidéo, vous devriez être capable d’identifier entre quelles balises vous aimeriez positionner votre menu personnalisé.
Insérez ensuite le bout de code suivant :
<?php wp_nav_menu($args); ?>
Comme vous pouvez le constater, il est possible de définir des arguments entre les parenthèses en lieu et place du $args.
Voici donc la liste des paramètres autorisés extraite du codex de WordPress :
$id : ID du menu ;$slug : le permalien du menu ;$menu : le nom du menu, utile si vous en créez plusieurs ;$container : l’élément parent du menu, par défaut une balise div est appliquée ;$container_class : la classe de l’élément parent ;$container_id : ID de l’élément parent ;$menu_class : la classe du menu ;$format : format du menu, je conseille une liste débutant par ul$fallback_cb : si le menu n’est pas créé dans WordPress, vous pouvez ajouter une commande WordPress pour pallier ce manque. Par défaut, les pages sont listées ;$link_before : texte à afficher avant le menu ;$link_after : texte à afficher après le menu ;$before : afficher du texte avant le lien ;$after : afficher du texte après le lien ;$echo : par défaut, la valeur est True ;L’ensemble de ces paramètres sont optionnels. Vous pouvez donc vous limiter au bout de code par défaut que nous entourons ici d’une balise div pour faciliter la gestion des styles :
<div> <?php wp_nav_menu(); ?> </div>
Une fois que votre menu est positionné là où vous le souhaitez, enregistrez le fichier.
Les initiés noteront que les nombreux arguments disponibles permettent une personnalisation très fine en termes de styles CSS… même si l’on pourrait aller encore plus loin.
Sous l’administration WordPress, déroulez le module Apparence puis cliquez sur Menus.
Indiquez dans un premier temps le nom du menu. Il est en effet possible d’en créer plusieurs et, si tel est le cas, vous devrez l’indiquer via l’argument menu.
Cliquez ensuite sur le bouton Créer menu.
Dans la partie gauche, vous noterez la présence de 3 modules :
Il vous suffit donc de cocher les éléments de votre choix – module après module, puis de cliquez sur Ajouter au menu.
Pour réarranger l’ordre du menu, glissez / déposez les différents éléments tout en sachant qu’il est possible de créer des sous-menus. Pour ce faire, décalez l’élément vers la droite pour créer une imbrication.
N’oubliez pas de cliquez sur Sauvegarder le menu pour enregistrer vos modifications.
Pour constater le résultat, ouvrez votre site dans un nouvel onglet. Ajustez en conséquence votre menu selon vos besoins.
Vous pouvez ajouter un second menu en cliquant sur le bouton en forme de plus, situé juste à côté du menu nouvellement créé sous l’administration WordPress.
Et voici le podcast vidéo qui reprend point par point les étapes de ce tutoriel.
La gestion personnalisée des menus sous WordPress 3.0 affiche clairement les ambitions à venir : faire de WordPress le meilleur CMS !
Crédits photo : Al_HikesAZ
Podcast: Download (108.9MB)
[...] reste dans les menus personnalisés de WordPress 3.0 décrits par Jane plus haut, mais cette fois on met les mains dans le cambouis et on s’y frotte [...]
[...] Créer des menus personnalisés avec WordPress 3.0 | WordPress Channel [...]
[...] Créer des menus personnalisés avec WordPress 3.0 – WP Channel [...]
[...] doute, le plus gros apport de cette version ! En suivant pas à pas, le tutoriel vidéo intitulé Créer des menus personnalisés avec WordPress 3.0, les barres de navigation n’auront plus de secrets pour vous [...]
Petite question ^^ :
Pour le code PHP, si on a créé plusieurs menus est ce qu’on doit le modifier ou bien on laisse comme tel et ça sera pris en compte ? (Le thème de WP3.0 n’autorise qu’un seul menu par exemple)
Merci
et bravo pour le tuto bien expliqué
On peut créer plusieurs menus, à conditions d’indiquer l’argument
menudans la commande PHP pour indiquer à WordPress de quel menu il s’agit – dans l’interface, il faut indiquer le bon nom.Et merci du compliment !
Donc a priori on ne peut pas mettre d’articles dans les menus ?
« Juste » des pages, catégories ou liens externes c’est bien ça ?
Merci
C’est exact ! Mais je ne vois pas comment tu pourrais insérer des articles dans un menu de navigation…
Bah je me dis peut-être dans le cas où tu as quelques articles clés. Ou un menu partiellement dynamique qui au lieu d’indiquer juste le nom de la catégorie et son lien, listerait les X derniers articles de cette catégorie…
OK, mais il existe déjà des widgets pour lister des articles et de nombreuses commandes PHP permettent d’arriver au résultat que l’on veut : articles populaires, les plus commentés, etc.
Bonjour,
Merci pour vos tutoriel super bien fait, en 20 minutes j’ai appris déjà beaucoup de choses
Mais pour cet argument ($menu), il va où précisément dans cette phrase :
'menu-header', 'theme_location' => 'primary' ) ); ?>?A bientôt.
Désolé pour l’erreur au dessus, si tu veux corriger :
'menu-header', 'theme_location' => 'primary' ) ); ?>Il va où tu veux je pense…
Je viens d’essayer a plusieurs endroits,
ici :
‘menu-header’, ‘theme_location’ => ‘primary’ ) ); ?>
ça me renvoie cette erreur :
Parse error: syntax error, unexpected T_ARRAY in /homez.53/hoteldeb/www/affiliation-systeme.com/www/wp-content/themes/twentyten/header.php on line 75
Dans les parenthèse de array ça me donne une autre erreur…
début de la ligne où j’ai mis $menu :
Bonjour,
J’aimerais bien connaitre également une solution pour insérer automatiquement les x derniers articles d’une catégorie directement dans un menu. L’idéal serait d’ajouter un module en complément des 3 présents (liens/pages/catégories).
Nicolas.
Ce n’est actuellement pas possible… mais un plugin devrait te permettre de faire une telle chose.
Toutefois, avec une commande WordPress que tu trouveras sur le codex, tu peux afficher les X articles les plus récents d’une catégorie.
Avec un peu de CSS, tu pourras facilement créer un menu… certes ce n’est pas super simple mais c’est la seule solution qui me vient à l’idée.
Bonjour,
un grand merci pour ce tuto video très bien expliqué. J’ai pu créer un menu personalisé juste en dessous de celui d’origine en rajoutant le code php dans le header.php
Seulement voila, j’aimerai utiliser la classe CSS de mon menu d’origine pour le menu ‘personalisé’.
Dans ‘header.php’, j’ai bien ajouter : ‘menu_class’ => ‘ CLASSE CSS’ , mais je ne vois où et qu’est ce qu’il faut écrire pour que le menu perso prenne en compte mon style d’origine ?
D’habitude, on appelle la feuille de style : …
Comment donc exploiter cette option ?
Voici mon code d’origine pour le menu :
Merci
Arf, le code n’est pas passé… il ne faut pas mettre de balise code en fait.
As-tu un lien vers ton site pour que je puisses t’aider ?
Et merci du compliment !
Voici l’adresse :
http://www.oasar.com/acceuil/
Pour le code , j’ai pourtant bien mis les balises??
je tente a nouveau :
J’utilise la balise ‘code’ que je ferme avec ‘/code’, avec bien sur les »
Merci
Désolé mais décidemment le code ne veut pas passer..
je l’écris sans les « crochets » :
div class= »art-nav »
div class= »art-nav-center »
ul class= »art-menu »
?php art_menu_items(); ?
/ul
/div
/div
Pas besoin des balises code… c’est vrai que c’est chiant l’insertion de code dans les commentaires.
Je te répondrais d’ici quelques jours car là, overbooking total !
Voici ma réponse !
Il faut que tu indiques la classe CSS qui doit s’appliquer pour ton menu.
Aides-toi ensuite de Firebug pour voir si elle s’applique correctement et au bon endroit. Tu peux aussi effectuer le changement en temps réel avoir un aperçu.
Comment indiquer la Classe CSS ? Tel est la question
Justement, le menu d’origine possède plusieurs classes CSS imbriquées, il y art-nav pour la première div , ‘art-nav-center’ pour la deuxième div ( qui centre le menu) et ensuite ‘art-menu’ pour ul class.
Avec firebug lorsque je remplace ‘CLASSE CSS’ par ‘art-menu’ , le menu s’aligne, mais la mise en page complète n’est pas effective…
J’ai voulu insérer les 3 classes séparées d’un espace à la place de Classe CSS , mais le menu ne s’affiche que partiellement( pas de police, pas de changement de couleur quand on passe la souris dessus..)
Je ne sais pas si c’est possible, mais je vais essayer de créer une class unique qui reprend les caractéristiques des 3.
Encore merci pour le soutien
Sinon, il faut s’aider du codex : http://codex.wordpress.org/Function_Reference/wp_nav_menu
C’est pas évident d’un point de vue technique si l’on a jamais fait ça… mais c’est un bon moyen d’apprendre !
Bonne chance !
Re-bonjour,
j’ai trouvé la solution sur ce site : http://budstechshed.com/make-your-artisteer-menu-compatible-with-wp30
Encore un grand merci, et bravo pour ton site
Merci à toi !
Bonjour
Très instructif cette vidéo. Comment gérer cette application si on fait une site web exclusivement avec des pages. On va avoir un menu long comme un jour sans pain. Est ce qu’il y a une solution pour collapser ?
Je cherche un menu compatible Artisteer et Pagemesh ou équivalent.
Merci
Merci pour le compliment !
Pour répondre à ta question, gérer plusieurs dizaines (centaines ?) de pages dans un menu tient de l’impossible car l’utilisateur ne parviendra pas à se repérer.
Il y a toujours moyen d’arranger le tout en agençant les menus avec des sous-menus mais cela reste limite comme méthode…
Les menus ne sont pas « compatibles » avec tel ou tel produit – je ne connais pas Artisteer et PageMesh, car il faut y insérer des lignes de code pour les activer ou utiliser les widgets.
C’est sur que si tous les menus sont développés ça le fait pas. Si tu vas sur iles.ch tu vas comprendre et le problème est que je n’arrive pas à mettre les pages dans l’ordre que je veux.
bonjour super Tutorial,
j’ai choisi de mettre dans ma barre de menu mes catégories, mais je souhaiterais que chaque onglet est une couleur différente :
exemple : catégorie « Environnement » l’onglet soit de couleur verte et l’onglet de « la vie pratique » marron…. etc..
comment procéder ?
Oui c’est possible car chaque élément de navigation – de même que les articles, possède une classe CSS qui leur est propre.
De fait, il est facile de personnaliser chaque élément.
Pour te faciliter les choses, utilises l’extension Firebug pour Mozilla Firefox.