Créer des menus parents non cliquable avec WordPress

Mis à jour le :

Depuis WordPress 3.0 et la prise en charge des menus de navigation, de nombreux utilisateurs se demandent comment faire en sorte que l’élément parent d’un menu ne soit pas cliquable.

Connectez-vous dans un premier temps au back-office de WordPress  puis rendez-vous dans le module Apparence. Déroulez ce dernier puis cliquez sur Menus.

Vous devriez retrouver votre navigation principale. Il suffit de remplacer chaque élément parent d’un menu par un lien externe avec les informations suivantes :

  • Adresse Web : # ;
  • Titre : le nom de votre menu non cliquable ;
custom-item-link-wordpress

Cliquez sur le bouton Ajouter au menu puis créez la hiérarchie comme vous avez l’habitude de le faire, par simple glisser / déposer.

Capture d'écran - Création d'une hiérarchie de menu
Positionnez l’élément parent en respectant votre hiérarchie initiale

Pour confirmer, faites Enregistrer le menu.

Vous pouvez créer autant de liens non cliquables en suivant cette manière. Simple et efficace vous ne trouvez pas ?

Avatar de Aurélien Denis

Protégez votre site WordPress

Vos données sont précieuses,
ne prenez pas le risque de tout perdre.
Confiez-moi votre maintenance !

Ces articles devraient t’intéresser…

92 réponses
  1. Avatar de James
    James

    Merci énormément pour cette solution, ça m’enlève une sacrée épine du pied !!

  2. Avatar de Lily Max
    Lily Max

    Merci d’avoir résolution mon problème en 2 minutes !!

  3. Avatar de Bio
    Bio

    Comment ça la façon de gérer les sous-menus ? Je ne comprends pas. Je ne veux pas me passer de sous-menus.

  4. Avatar de Bio
    Bio

    Bonjour le problème de cette astuce est que cela ne fonctionne pas en responsive. Les sous-menus de s’affichent pas.

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Cela dépend directement de la façon de gérer les sous menus dans votre thème et non directement de l’astuce proposée. En approche mobile first, les sous menus sont à bannir dans la mesure du possible.

  5. Avatar de patrel
    patrel

    Hello!
    Mille mercis pour cette astuce. Cela faisait des mois que je cherchais cela et, curieusement, c’est très mal expliqué globalement sur le net.
    Je suis donc passé à côté maintes et maintes fois.
    Enfin j’ai trouvé. Merci 😉

  6. Avatar de francesco
    francesco

    Bonjour

    j’ai une question concernant les produits. En effet je dois gérer les stocks de mes fournisseurs en me rendant quotidiennement sur leur site internet.
    Pour aller plus vite je souhaiterais ajouter quelques part un lien privé qui me permet de me rendre directement vers la page produit de mon fournisseur.
    Où puis je mettre ce lien dans woocommerce et surtout qu il reste en privé?

    Merci pour vos réponses

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Bonjour, votre question est hors sujet avec cet article. Merci de poser votre question sur le support de WPFR.

  7. Avatar de Dans le sillage d'Anne
    Dans le sillage d’Anne

    Oh la la, merci, cela faisait un moment que je renonçais aux menus car je trouvais que c’était le bazar, mais voilà la super astuce, ça va être tout beau et surtout bien pratique sur mon blog ! 🙂

  8. Avatar de Tot
    Tot

    Bonjour !
    Cette astuce est superbe en effet mais un lien personnalisé ne peut apparaître dans un fil d’Ariane je me trompe ? Comment peut on faire pour le considérer comme le parent d’une page ou d’une catégorie ?

  9. Avatar de florence
    florence

    Je cherchais désespérément ; un grand merci pour l’info

  10. Avatar de silencesim
    silencesim

    Bonjour,

    Non pas du tout. Le menu est composé de différents éléments est notamment la partie en question :
    La saison (page saison 2015 -2016)
    – la saison 2015 (page saison 2015)
    – la saison 2016 (page saison 2016)

    http://theatredeloulle.com/

  11. Avatar de silencesim
    silencesim

    Bonjour,

    Et pour faire le contraire ?
    J’ai un menu avec des sous elements, l’élément parent n’est pas cliquable. Auriez-vous une idée de comment faire pour le rendre cliquable ?

    Merci

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Bonjour,

      si vous faites un clic milieu avec la souris sur l’élément parent, est-ce que vous obtenez une page 404 ou non ?

  12. Avatar de ph
    ph

    Oui mais ne rien mettre du tout fait buger le menu sur tablettes.
    On tourne en rond !

  13. Avatar de bouboune
    bouboune

    Mettre un # n’empêche pas de cliquer sur le bouton du menu il renvoie simplement à la même page;

    ne rien mettre du tout dans le champ lien et le menu n’est plus du tout cliquable !!

  14. Avatar de darknote
    darknote

    Bonjour,
    Avez vous un plugin cache ? Comme WP Super Cache? Zencache? W3 Total Cache? Wp_Rocket ? etc….
    Dommage de ne pas mettre l’adresse de votre site, on pourrait voir le problème.
    Vous videz bien le cache déjà de votre navigateur, voir à utiliser un logiciel de nettoyage comme Ccleaner.

  15. Avatar de Guillaume
    Guillaume

    tout d abord, Merci pour votre reponse.
    Comment faire pour vider le cache?
    Via un login cache si j ai bien compris ? En avez vous un a me conseiller ?
    Merci beaucoup

  16. Avatar de darknote
    darknote

    Bonsoir,
    Vous n’avez un plugin cache ?
    Si cela fonctionne quand vous êtes connecté et que du moment que vous êtes déconnecté, donc simple visiteur, c’est que vous avez une version de votre site avant les sous-menu, une version mise en cache.
    il faut vider son cache.

  17. Avatar de guillaume
    guillaume

    Bonjour,

    Merci pour votre réponse. Oui l’arborescence est bien correcte. (les sous éléments sont sur la droite dans le menu)

    Pour être plus précis => en mode admin : lorsque je place les sous élément sur la droite dans le menu , tout est OK mais ces sous éléments ne sont plus visible sur mon site lorsque je quitte le mode admin et que je vais sur mon site via le navigateur .
    Toujours Hors mode admin, lorsque je clique sur l’élément parent , j’arrive sur la page parent mais à aucun moment j’ai accès aux sous élément. (ceux ci ne sont pas visible)

    Dois je reinstaller le theme ?

  18. Avatar de guillaume
    guillaume

    Bonjour,

    Je suis entrain de créer un site wordpress avec le thème twenty fifteen.
    J’ai créer des sous elements (= des « sous menu ») au menu principal mais les sous éléments ne s’affichent pas !
    et je ne sais pas comment faire pour que cela fonctionne…
    Je pensais avoir trouvé la solution du problème (en cochant dans chaque pages représentant les sous éléments du menu , dans « Attribut de la page », le nom de la « page parent » mais ça ne fonctionne pas non plus !

    Savez vous comment resoudre cela ?

    A l’avance, merci beaucoup

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Dans Apparence > Menus, l’arborescence est-elle correcte ? Autrement dit, les sous-éléments sont-ils bien indentés ?

      La notion de Page parent / enfant est quasi-obsolète sous WordPress et inutile ici.

  19. Avatar de shadoo
    shadoo

    On ne doit pas mettre le dièse après « http://# » mais supprimer http:// et le remplacer par # si non c’est comme si tu pointais ton url de lien externe vers un nom de domaine http://#
    Une url interne doit toujours partir de la racine du nom de domaine et/ou à la racine du lien de la page actuelle (relatif), mais là en l’occurrence « Lien personnalisé » est fait pour des liens externes de base, si l’on veut overrider le lien absolue par un lien relatif il faut supprimer toute la partie « http:// ».
    Afin que # s’accole à la suite de l’url courante.
    Ce sont les bases des liens relatifs et absolues dans le web.

  20. Avatar de Jack05
    Jack05

    Bonsoir, cette technique ne fonctionne pas pour moi, elle me renvoie sur une page erreur du navigateur.
    Donc je mets juste « # » et non « http://# » et ça fonctionne.
    En tout cas un grand merci pour cet article.

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Bonne remarque, l’article n’est plus à jour et il faut effectivement n’utiliser qu’un dièse.

  21. Avatar de BriceL
    BriceL

    encore plus simple mettre « javascript: return false; » sans les «  » à la place du lien 😉

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Astuce déjà évoquée plusieurs fois dans les commentaires mais qui pose des soucis sur du tactile notamment. 😉

  22. Avatar de Gégé
    Gégé

    Bonjour,
    j’ai la version 4, j’ai tenté de suivre les étapes énoncées sans résultat.Besoin d’aide!!!

    1. Avatar de j.howlett
      j.howlett

      Bonjour,
      la solution est donné dans les commentaire,s mettre dans le menu, ligne Class CSS, ce code
      noclic cursordefault important

  23. Avatar de Darknote
    Darknote

    Bonjour,

    Je connaissais l’astuce mais il me reste un souci pour les pages, les pages enfants ont dans leurs urls toujours le nom de la page parent, il n’y a pas un moyen de ne pas avoir le nom de la page parent ?
    http://nomdedomaine.fr/page-parent/page-enfant en http://nomdedomaine.fr/page-enfant ?
    Merci

    1. Avatar de Aurélien Denis
      Aurélien Denis

      En ne définissant pas de pages parentes mais en n’utilisant que les menus pour faire la hiérarchie. 😉

      1. Avatar de Darknote
        Darknote

        Bonjour,
        c’est la solution que je fais, j’avais pensé qu’il y avait peut être un autre moyen, merci

  24. Avatar de djmehhh
    djmehhh

    Oui oui Apparence / Menu/ , et clique sur le petit onglet sur la page en question… :/

  25. Avatar de djmehhh
    djmehhh

    Bonjour
    J’ai découvert avec joie votre comm,
    déception 5 minutes plus tard,
    sur ma page j ai Navigation Label et Title Attribute
    mais aucune trace d’adresse web :/
    helppp

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Dans Apparence > Menus ?

  26. Avatar de Spayn
    Spayn

    Bonjour,
    je suis sur wordpress 4.0 et cette astuce ne semble pas fonctionner…toute idée sera la bienvenue!
    Merci d’avance

    1. Avatar de Spayn
      Spayn

      Au temps pour moi, avec WP 4.0 il suffit de ne rien mettre dans le champ « adresse web », comme l’a préciser Gilles ci-dessus…merci quand meme pour l’info et bonne continuation a tous.

  27. Avatar de conduisant
    conduisant

    merci pour cette astuce qui fonctionne toujours bien sur wp 3.8.1.

    par contre une question, lorsque j’ai fais un sitemap du site, je n’ai donc pas l’ensemble des menus non cliquables dans mon sitemap : je me retrouve avec une liste de pages très longue…existe-t-il une (autre) astuce pour générer un sitemap avec tous les menus non cliquables ???

    1. Avatar de Aurélien Denis
      Aurélien Denis

      En utilisant la fonction wp_nav_menu dans le sitemap.

  28. Avatar de eb
    eb

    Bonjour,

    Auriez-vous une solution pour que ces liens non cliquables apparaissent dans le fil d’ariane ? J’ai créé des liens, avec des catégories en sous menu, mais seuls ces sous menus apparaissent.

    Merci!

    1. Avatar de Aurélien Denis
      Aurélien Denis

      J’ai vaguement une idée en passant par l’appel du menu mais ça risque de ne pas tenir bien longtemps… Le mieux reste de créer une vraie hiérarchie.

  29. Avatar de gilles
    gilles

    A priori cela ne fonctionne plus avec la version 3.8.

    Il faut simplement enlever tout le lien et laisser la case « adresse web » complètement blanche.

    En tout cas cette astuce fonctionne sur mon site. Et c’est plus logique. Puisqu’il n’y a pas de lien, il n’y a pas d’hypertexte.

  30. Avatar de Josepe
    Josepe

    L’homme de la situation !! tu es magique !!

  31. Avatar de Manuel
    Manuel

    Bonjour;
    Quelle est donc la meilleure et la plus fiable des solutions au final??? j’avoue qu’avec toutes celles qui ont étaient données je suis complètement perdu maintenant…. 🙁

    que pensez vous de ce plug-in? Ambrosite Unlink Parent Pages cité plus haut?

    Aurélien viens à notre secours!!

    1. Avatar de xavier de Kéroullas
      xavier de Kéroullas

      Si on met un dièse seul comme lien d’adresse web l’inconvénient est que on se repositionne en début de page , en général on y est déjà mais ce n’est pas toujours le cas , donc pour éviter ce retour en début de page il faut définir une vraie ancre de positionnement, n’importe laquelle , le nom du menu par exemple , pour faire ‘propre’.
      Là c’est ok , mais il y a toujours cette petite main quand on positionne la souris ,indiquant la présence du lien, et le non initié peut croire qu’il ne se passe rien par erreur quand il clique dessus …

  32. Avatar de stigmamaxStigma
    stigmamaxStigma

    ça ne marche pas pour moi. J’ai supprimé les pages que j’utilisais pour mes entrées de menu pour les remplacer par la méthode que vous montrez. Résultat : Le premier élément disparait et toutes les entrées de menu se retrouvent alignées côte à côte dans la barre ! pourtant la hierarchie existe toutjours dans l’admin menu !!!!????

  33. Avatar de Anouar
    Anouar

    La solution est de laisser le champ libre et ne rien mettre. Javascript c’est pas bon, css pas fonctionnel, et # c’est encore pire.

    1. Avatar de Aurélien Denis
      Aurélien Denis

      On ne peut rien mettre car WordPress ne l’autorise pas…

  34. Avatar de Fred
    Fred

    Bonsoir, Comment je peux ajouter un lien en php avec une date dynamique. du type /?s=cal_event&m=20131002.

    merci

  35. Avatar de Stephane Dessenne
    Stephane Dessenne

    Encore une fois « Merci Aurélien » 😉

  36. Avatar de eric
    eric

    Bonjours a tous, ça marche sauf pour le megamenu pour les liens colonne, si quelqu’un a une solution je prend, merci

  37. Avatar de skoop
    skoop

    Ca marche pas chez moi 🙁

  38. Avatar de Dom
    Dom

    Le javascript: return false; de Maxim est parfait merci !

  39. Avatar de Agence web FD
    Agence web FD

    Génial le petit « javascript: return false; » ! Merci beaucoup.

  40. Avatar de Pierre-Yves Tavernier
    Pierre-Yves Tavernier

    Pour régler le problème sur un wp avec le theme vulcan, j’utilise le plugin : Ambrosite Unlink Parent Pages.
    C’est la solution la plus simple que j’ai trouvée.

  41. Avatar de Atomicfryer
    Atomicfryer

    Tellement simple que cela ne m’a même pas traversé l’esprit…
    Un Grand merci à wpchannel, grave a vous j’apprend tout les jours !

  42. Avatar de Steve Fallet
    Steve Fallet

    Avec la nouvelle version de WP il suffit de créer le lien personnalisé en mettant ce que vous voulez comme adresse web (#, toto, …).

    Une fois votre lien placé dans le menu, supprimer l’adresse web et le tours est joué !

    WP créer pour cet élément de menu un lien sans attribut href : Mon menu

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Oui par contre il me semble qu’il faut rajouter une propriété CSS pour avoir le bon curseur de lien, non ?

      1. Avatar de Steve Fallet
        Steve Fallet

        Oui malheureusement tant que l’élément du menu sera contenu dans une balise de lien il faudra utiliser le subterfuge d’une classe css spécifique avec cursor: default;

  43. Avatar de Willy
    Willy

    On peut pousser le truc encore plus loin et transformer les éléments dont le href est # en span. Il suffit d’utiliser un Walker personnalisé, et de l’utiliser sur le menu.

    Personnellement j’en ai aussi profité pour virer les liens sur les éléments courants (car j’aime pas que mes contenus fassent des liens vers eux-mêmes…)

    Un petit tuto du comment faire : Faire son Walker personnalisé

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Je viens de survoler ton article… énorme ! Non seulement, je n’avais jamais trouvé de ressources francophones à ce sujet mais l’image est tout aussi géniale. 🙂

    2. Avatar de Steve Fallet
      Steve Fallet

      Super ton blog, je m’y abonne de suite.

      1. Avatar de Aurélien Denis
        Aurélien Denis

        Merci ! 😎

  44. Avatar de sb
    sb

    bonjour, cette fonction ne marche pas pour moi :/ une autre solution ? bien à vous

  45. Avatar de Chlouby
    Chlouby

    Super ! Merci !!

  46. Avatar de PRIGENT
    PRIGENT

    Super.
    Merci.
    Bonne continuation.
    Nathan

  47. Avatar de Maxim
    Maxim

    Pour tout ceux qui ne sont pas satisfait de # (parce que peu importe le style qu’on lui donne, ça fait toujours l’effet d’un ancre), dans la partie « Adresse web » au lieu de http:// ou de # ou de http://#, écrivez ceci :

    javascript: return false;

    En gros, ça désactive le suivi du lien et donc le lien « n’existe plus ». C’est tout, pas de css, juste cette ligne! Pour ceux qui ne serait pas satisfait de cette solution, faites nous profiter de la vôtre si elle est plus efficace!

    Merci!

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Testé et approuvé pour un client !

    2. Avatar de Jobeleau
      Jobeleau

      Une solution très élégante; merci de l’avoir partagée !

    3. Avatar de Mickaël
      Mickaël

      Attention quand même avec la technique javascript: return false; plutôt qu’un # .

      Sur les appareils tactiles (notamment, iPad), impossible de faire dérouler menu déroulant en « cliquant » dessus du coup… !

      1. Avatar de djeycognard
        djeycognard

        eh oui, quelqu’un à trouvé une solution pour les ipad?

    4. Avatar de foxprime
      foxprime

      Solution parfaite. Merci !
      (ce serait bien de l’ajouter à l’article, ça évitera de chercher dans les commentaires.

    5. Avatar de mlpdlr
      mlpdlr

      nickel. Merci ca marche très bien

    6. Avatar de Cyril
      Cyril

      merci, nickel 🙂

    7. Avatar de Patrice
      Patrice

      Le deux solutions marche nickel, pour l’instant. chrome et firefox

    8. Avatar de Laure
      Laure

      YES!!! le # me faisait une page blanche, là c’est impec, l’élément de menu est non clickable mais ses sous menus se déroulent quand on passe dessus. Merci!!!

    9. Avatar de MaxR
      MaxR

      Absolument fabuleux ! Même des années plus tard, cette astuce aide encore et toujours !!

      Mille mercis !

      MaxR

    10. Avatar de SITESCOM
      SITESCOM

      Bonjour. J’ai executé javascript: return false; à la place du # dans un lien personalisé de l’entête du menu de mon thème builder. Après validation le code disparaît (où s’est il enregistré ? Pas dans functions.php…). Le champ du lien est devenu vide. Ca fonctionne, mon pseudo lien n’est plus cliquable MAIS dans ma page de contact le bouton ENVOER du formulaire DIVI ne fonctionne plus non plus. HELP ! je ne trouve pas comment régler ce problème

  48. Avatar de expert wordpress
    expert wordpress

    Ça fait des mois que je recherche cet astuce.
    Merci beaucoup

  49. Avatar de Haka
    Haka

    En fait pas la peine de mettre le # dans l’URL. Laissez le champ vide et ajouter la ligne :
    .noclic {cursor:default !important;}
    à votre feuille de style et le tour est joué.
    Merci pour l’info car cela m’a fait gagné beaucoup de temps 🙂

    1. Avatar de Pixnel
      Pixnel

      Un grand merci pour ce commentaire, car il est vrai que le # n’est pas parfait.

    2. Avatar de Hugues
      Hugues

      Monstrueux c’est exacement ce que je cherchais (non cliquable, pas mousehoverable)

  50. Avatar de Fallet Steve
    Fallet Steve

    Une bonne solution consiste à mettre # comme url et d’ajouter une classe CSS spécifique à l’élément du menu « non cliquable ».

    Exemple de classe CSS :
    /*Au liens de 1er niveau des éléments de la classe .noclic*/
    .noclic> a {cursor:default !important;}

    Pour ajouter facilement une classe à une élément du menu :
    https://wpchannel.com/options-cachees-menus-navigation-wordpress/

    Fonctionne sur Chrome, Firefox, IE9 et Opéra

  51. Avatar de Jobeleau
    Jobeleau

    Toujours sur Mac, si on ne laisse que le dièse, le menu reste cliquable (le curseur se transforme en main) mais le clic n’aboutit pas. Vérifié avec Safari, Firefox et Opera.

    À mon humble avis, une solution plus élégante serait d’envoyer le visiteur directement sur le premier élément du sous-menu.

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Essaie de mettre le domaine du site avec le dièse comme ceci : https://wpchannel.com/#

  52. Avatar de Phil D
    Phil D

    Sauf que je constate que si on met http://# on obtient un signal d’erreur (URL non valide) dans IE9, Firefox et Opéra, en cliquant sur l’élément du menu.
    Si j’enlève le http:// et ne laisse que le Dièse (#) ça marche sans signal d’erreur.

    1. Avatar de Jobeleau
      Jobeleau

      Provoque une rreur d’URL non valide dans Safari (Mac) également.

    2. Avatar de Balystick
      Balystick

      Merci pour l’astuce de l’astuce 🙂

    3. Avatar de Itech PC
      Itech PC

      c pas le # juste laisse le champ vide

  53. Avatar de Phil D
    Phil D

    Génial et trop simple, ça faisait des semaines que je cherchais. Merci!

  54. Avatar de thierry
    thierry

    Une astuce mais excellente.
    Bonne continuation.
    Thierry

    1. Avatar de jparuitte
      jparuitte

      Superbe astuce ! Je cherchais comment faire, et c’est ultra simple. Merci.