Je construis un menu horizontal et certaines des entrées de ce menu auront des listes déroulantes (sous-menus), et d'autres non. Ceux qui ont des sous-menus ne sont pas en fait des pages. Ils sont juste destinés à être des guides pour les listes déroulantes.
Par exemple, disons que le menu horizontal est comme suit:
Accueil | À propos de nous | Produits | Directions | Contact
Et l'élément li "produits" est censé avoir 3 pages liées dans une liste déroulante verticale en dessous, donc "produits" lui-même ne représente pas réellement une page, comment puis-je faire cela dans WP?
(J'utilise WP comme CMS, avec des pages d'accueil et intérieures statiques. Je construis mes propres modèles, stylise les menus en CSS, puis enregistre les menus dans le fichier functions.php et les appelle dans les modèles.) Dans WP, vous ajoutez des entrées à les menus via la liste des pages, ou par les liens personnalisés. Mais je ne veux pas que les "produits" soient liés. Si je n'ajoute pas de lien au lien personnalisé, il ne me permettra pas de l'ajouter au menu.
Est-ce faisable via l'administrateur des menus ou dois-je l'aborder d'une autre manière?
Merci pour toute aide!
Réponses:
J'ai quelques idées:
#
auquel ne retournera rienla source
href=""
car la plupart des utilisateurs d'appareils tactiles ne pourront pas voir le menu déroulant sans utiliser JSwp_list_pages()
, et nonwp_nav_menu()
La façon la plus simple de le faire sans plugin ou quoi que ce soit est d'utiliser la fonction "Menus" de WordPress. Voici les instructions pour WordPress 4.8:
la source
La méthode la plus simple que j'ai trouvée était de créer un élément de lien personnalisé avec la valeur URL du lien de
#
. Cela envoie l'utilisateur vers un hachage vide sur la même page, donc en gros, il n'y a aucun lien.Cependant, il existe certains effets secondaires de l'utilisation de hachages vides pour les liens d'espace réservé. Le lien apparaîtra toujours et se comportera comme un lien, il pourrait donc dérouter un utilisateur lorsqu'il clique sur ce qui semble être un lien mais rien ne se passe. L'autre effet est que cliquer sur un lien de hachage vide remplacera tout hachage existant, envoyant l'utilisateur en haut de la page. Ce n'est peut-être pas si inquiétant pour un menu qui est en haut de la page de toute façon, mais c'est assez choquant lorsque la page saute de manière inattendue lorsque vous ne vous y attendez pas, surtout s'il s'agit d'un menu de pied de page.
La solution consiste à combiner la méthode de hachage vide avec un morceau de code pour détecter quand des liens de hachage vides sont utilisés dans le menu et supprimer
href
complètement l' attribut de ce lien. Una
élément sanshref
attribut est la bonne méthode HTML 5 pour créer un lien d'espace réservé.la source
Cela a fonctionné pour moi:
J'ai activé les classes CSS dans Menus> Options d'écran> Classes CSS. Ensuite, j'ai donné l'élément de menu que je voulais désactiver la classe ".nolink" et ajouté ce morceau de code à mon panneau CSS personnalisé:
la source
#
comme cible de lien, puis appliquer une classe CSS personnalisée à des fins de style, est à mon avis la solution la moins hacky. Cependant, le réglagepointer-events: none
n'a pas beaucoup de sens pour moi, car il cassera les sous-menus. Pourriez-vous expliquer pourquoi vous avez défini cet attribut?En utilisant l'approche PHP, j'ai ajouté ce code à functions.php:
Cela remplacera le lien par un élément span pour le menu de l'élément avec le post_name == "contact", ce que je cherchais. Vous pouvez facilement changer cela pour vérifier le titre du menu ou l'ID, ou ajouter du code pour vérifier s'il a des éléments de menu enfant, etc.
la source
J'ai résolu de cette façon: dans header.php (de votre thème) j'ai cherché:
et remplacé par:
En termes simples, ce script vérifie si son lien parent se termine par "#", dans ce cas, il ajoute un élément span autour du contenu de la balise A, qui désactive le clic.
J'espère que ça aide :-)
la source
Comme d'autres l'ont suggéré ici, vous pouvez créer un élément de menu de lien personnalisé avec le # comme URL. Effacez ensuite le # une fois qu'il est ajouté au menu. Et enfin, vous pouvez utiliser cette expression régulière simple pour supprimer la balise réelle de ces liens.
la source
Cela supprimera le clic (et décortiquera l'élément). De cette façon, vous n'avez pas à utiliser les liens # personnalisés dans votre menu.
la source
Appréciez que c'est un vieux fil de discussion, mais pour un moyen rapide et sale d'avoir un lien dans Wordpress, faites l'URL du lien comme:
#_
Remarquez le trait de soulignement après le hashtag. De cette façon, si votre menu défile vers le bas de la page (c'est-à-dire fixe), vous n'obtenez pas un saut en haut de la page lorsque vous cliquez dessus et ne nécessite aucun plugin / script.
la source
Je me rends compte que je suis en retard dans le jeu, mais ce sont les deux méthodes que j'utilise:
1) Faites de l'élément de menu parent un doublon du premier sous-élément et changez son étiquette. Par exemple, si le premier élément sous "Produits" est "Produit 1", utilisez "Produit 1" comme élément de menu parent, puis changez son étiquette en "Produits". De cette façon, "Produits" et "Produit 1" mèneront à la page Produit 1.
2) Ajoutez une redirection pour que la page Produits soit redirigée vers le produit 1. L'avantage de cette option est qu'elle vous permet de créer une page Produits vierge pour créer une liste hiérarchique dans Pages, mais si quelqu'un essaie d'accéder aux Produits vierges page, ils seront redirigés.
la source
Allez dans Apparence, puis cliquez sur les menus. Dans cette section, allez sous la structure du menu et cliquez sur la flèche vers le bas pour développer la page et vous verrez une boîte qui dit désactiver le lien. Cochez cette case et enregistrez.
la source
Ajoutez ce filtre:
Modifiez le CSS d'envergure pour obtenir le même style que
<a>
, n'oubliez pascursor: context-menu;
.la source
Créez l'élément de menu "Liens personnalisés" et ajoutez "javascript :;" (sans guillemets) pour le champ URL. C'est mieux que d'utiliser "#" car cela ne fera pas défiler votre page vers le haut lorsque vous cliquerez dessus.
la source
En écrivant à partir du 1/2019, la solution qui produit le bon HTML5 est de faire ce qui suit.
Cela produira une navigation de niveau supérieur
<a>Menu</a>
qui est la bonne façon de représenter un lien non cliquable.la source
Vous pouvez désactiver les événements sur la
<a>
balise pour tous les éléments de menu de premier niveau à l'aide de css pur..main-menu
la classe peut avoir un autre nom selon la dénomination de votre menu.la source
Une solution beaucoup plus simple peut être trouvée sur une autre question:
Menu Admin - Mettez en surbrillance le menu de niveau supérieur sur une page de sous-menu (sans afficher le sous-menu)
Recherchez la réponse d'Askelon. Fonctionne parfaitement, sans avoir besoin de faire de preg_replaces ou de jquery.
la source