4 techniques pour masquer une page dans un menu WordPress

Masquer un menu wordpress

J’utilise beaucoup WordPress. C’est une plateforme que j’aime bien car elle est souple et ouverte (et parce que Matt Cutts l’utilise lol) ;-)

Récemment, je me suis trouvé confronté à un problème relativement simple mais pour lequel je n’ai pas trouvé la solution sur le net. Je cherchais à ne pas afficher une page dans un menu de navigation.

Masquer un menu wordpress
Image de chez www.fredzone.org

Je me suis donc creusé la tête et fouillé sur le Codex pour trouver 4 solutions pour masquer une page dans une menu WordPress :

1. Les menus personnalisés

menu worpdress pesonnaliséDepuis la version 3.0 de WordPress, vous pouvez gérer vos menus de façon personnalisée grâce à l’option « Menu » qui se trouve dans votre menu de gauche.

Si votre thème n’est pas récent, l’intégration dans le code est relativement simple via cette ligne de code :

<?php wp_nav_menu($args); ?>

Par défaut, si vous ne spécifiez pas $args, vous afficherez votre premier menu personnalisé. Ô joie, ô bonheur, $args permet pas mal de chose (détails extrait 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 ;

Et si vous souhaitez afficher un de vos menus, il vous suffira d’ajouter cette ligne de code dans votre thème :

<?php wp_nav_menu( array(‘menu’ => ‘NomDeVotreMenu’ )); ?>

Remarque EKO : Je ne pouvais utiliser cette solution car la mise en place du menu personnalisé ne convenait pas sachant que je n’aime pas mettre les mains dans le code

2. Modifier l’appel de la fonction PHP de votre menu

Grâce à l’argument « exclude » de la fonction « wp_list_pages » qui liste toutes les pages du site, vous pouvez exclure certaines pages via leur identifiant. Voici donc un exemple qui sera plus clair :

<?php wp_list_pages(‘exclude=17,38’ ); ?>

qui exclura les pages 17 et 38 de votre menu. Plus d’info dans le Codex sur wp_list_pages.

Remarque EKO : j’ai failli le faire… mais « je ne sentais pas le code aujourd’hui ».

3. Et le widget standard ?

Le widget standard de menu permet d’exclure des pages. Et oui ! Après avoir cherché partout dans mon thème, je suis tombé sur cette fonctionnalité native !

Pas besoin de vous casser la tête ni de mettre les mains dans le code ;-)

Widget menu wordpress

Remarque EKO : La voila ma solution ! Je ne pouvais pas trouver mieux.

4. A la « mano »

La dernière option, qui est la moins propre, est de réaliser votre menu entièrement à la main. Quelques bons <ul> , <li> et liens en durs seront nécessaires ^^.

Simple et efficace si vous n’avez pas besoin de le faire évoluer ;-)

Remarque EKO : Technique un peu trop « à l’ancienne » mais peut se révéler efficace ;-)

Ma recommandation

Vous l’aurez compris, je vous conseille l’utilisation des menus personnalisés ou l’utilisation du widget « menu » pour exclure des pages de votre navigation. Les autres méthodes nécessitent de mettre les mains dans le code… et ce n’est pas ma tasse de thé. Mais dans certains cas, ces solutions peuvent s’avérer utiles.

J’espère que cet article aura pu vous aider. Si vous avez d’autres solutions, postez dans les commentaires. Je les ajouterai.

Author: E-H

13 thoughts on “4 techniques pour masquer une page dans un menu WordPress

  1. Ces méthodes sont excellentes. La meilleure reste sans doute la première avec les menus personnalisés.

    Il y a aussi une quatrième méthode, qui consiste à faire appelé à une classe PHP permettant de générer à volonté le menu, mais cela commence à devenir très complexe pour le coup…

  2. merci pour les infos,
    en jouant avec les liens et les pages, le résultat est également possible

  3. Le menu personnalisé de la version 3 de WP (me semble t-il)à est la meilleure des solutions je pense, elle n’est pas si difficile que ça à mettre en place @protéine

  4. Merci pour cette astuce intéressante surtout le cas du widget qui gère déjà nativement cette exclusion.

    Très pratique en tout cas.

  5. Je connaissais trois des 4 techniques et celle du widget même si je ne l’avais pas remarquée ne me semble pas la plus appropriée. En effet un widget, si je ne me trompe pas, on le met que dans une sidebar non ? Et à moins d’avoir une « top »bar en haut de notre page, le menu s’affichera dans une sidebar classique (à droite ou gauche, éventuellement en footer) non ?

    Par contre le wp_list_pages est fort pratique quand un thème n’accepte pas les menus persos et qu’on a la flemme de le bidouiller :P

  6. Personnellement j’étais tombé sur la méthode numéro 2 en ayant cherché une méthode pour masquer une page dans un menu et elle marche très bien. La solution 3 est en fait la plus simple. Je ne suis pas fan de la dernière car cela implique de devoir retoucher le menu lors d’ajout d’une page…
    Un bon résumé que je garde sous la main au cas où ;)

  7. Je dois être complètement débile parce-que même en utilisant le widget pour exclure ma page contact du menu de navigation, rien ne se passe. J’ai essayé avec les autres pages, exactement la même chose, rien ne se passe !

    Quant à la fonction « exclude », je pense que j’ai du prendre le seul thème où je trouve nulle part « wp_list_pages ».

    Please HELP je craque !
    merci

Comments are closed.