
🔒 Comment masquer une catégorie dans WordPress : 4 méthodes étape par étape
La page d’accueil de WordPress affiche tout par défaut: les articles de toutes les catégories créées se mélangent dans un flux unique. Pour un blog, c’est normal. Mais si vous lancez une boutique en ligne, un portfolio ou un site corporate, certaines catégories n’ont tout simplement pas leur place sur la page d’accueil.
Pire, les robots des moteurs de recherche indexent tout, y compris les catégories de service et de brouillon. Résultat: des pages dupliquées dans les résultats de recherche, un index dilué et un classement en baisse. Et un visiteur qui tombe sur une section fermée se retrouve face à une page vide au lieu d’un contenu.
Heureusement, vous pouvez masquer une catégorie dans WordPress en 5 à 10 minutes, sans avoir besoin d’un développeur. Voici quatre méthodes qui fonctionnent: d’une extension qui se règle en deux clics à du code propre dans functions.php. Choisissez celle qui correspond à votre besoin.
💡 Aperçu rapide:
- Installez Ultimate Category Excluder et cochez les catégories à masquer.
- Configurez WP Categories Widget pour un masquage sélectif dans la barre latérale.
- Ajoutez le hook pre_get_posts dans functions.php et excluez la catégorie par son ID.
- Utilisez l’extension Members avec un extrait de code pour masquer selon les rôles utilisateur.
Pourquoi masquer des catégories?
WordPress ne fait pas la distinction entre une catégorie «publique» et une catégorie «technique». Tout ce que vous avez créé dans «Articles → Catégories» apparaît automatiquement dans le flux principal et les archives. Dans certains cas, c’est pratique, dans d’autres, cela crée des problèmes:
- Les catégories de service (par exemple «Brouillons» ou «Pour les éditeurs») sont indexées et apparaissent dans la recherche.
- Les catégories au contenu ancien ou obsolète diluent l’impression laissée par le site.
- Les sections fermées (articles premium, documents clients) deviennent visibles pour tous les visiteurs.
Point important: n’essayez pas de résoudre le problème par CSS. display: none masque la catégorie visuellement, mais les moteurs de recherche voient toujours le contenu et peuvent l’interpréter comme du cloaking. Une pénalité de Google dans ce cas est quasiment garantie. La bonne méthode consiste à exclure la catégorie au niveau de la requête en base de données, pas à la masquer avec des styles.
Méthode 1. Ultimate Category Excluder, masquer une catégorie en une minute
La méthode la plus simple et la plus fiable est l’extension Ultimate Category Excluder. En juin 2026, elle compte plus de 50 000 installations actives, une note de 4,2/5 et une compatibilité avec WordPress 6.5+. Le développeur met à jour l’extension régulièrement, la dernière version datant de décembre 2025.

Étape par étape:
- Dans le panneau WordPress, allez dans Extensions → Ajouter.
- Dans le champ de recherche, tapez «Ultimate Category Excluder», cliquez sur Installer, puis sur Activer.
- Après l’activation, un élément Category Exclusion apparaît dans le menu «Réglages», allez-y.
- Cochez les cases des catégories que vous devez masquer de la page d’accueil, des archives, du flux RSS et de la recherche.
- Cliquez sur Mettre à jour.

C’est fait. Ouvrez votre site en navigation privée et vérifiez que les articles des catégories cochées ont disparu de la page d’accueil. L’extension agit au niveau de WP_Query: elle modifie la requête en base de données, elle ne masque pas des blocs via CSS. Par conséquent, pour le SEO, c’est totalement sûr.
Avantages: zéro code, convient aux débutants, exclusion sélective (accueil, archives, RSS, séparément). Inconvénients: si vous devez masquer une catégorie uniquement dans un widget spécifique, cette extension ne vous aidera pas, il existe pour cela un outil plus précis.
Méthode 2. WP Categories Widget, masquer une catégorie dans un widget
Si votre besoin est plus restreint, supprimer une catégorie spécifique de la barre latérale ou du pied de page plutôt que de tout le site, utilisez WP Categories Widget. En février 2026, l’extension est en version 2.8.1, totalement compatible avec la version actuelle de WordPress, et compte plus de 3 000 installations actives.
Ce qu’elle permet de faire:
- Afficher les catégories de n’importe quelle taxonomie (pas seulement les catégories standard, mais aussi les étiquettes et les taxonomies personnalisées).
- Masquer le titre du widget.
- Activer ou désactiver le compteur d’articles pour chaque catégorie.
- Afficher ou masquer sélectivement certaines catégories directement depuis les paramètres du widget.
Comment l’utiliser:
- Installez et activez l’extension via Extensions → Ajouter.
- Allez dans Apparence → Widgets.
- Repérez le widget «WP Categories Widget» et faites-le glisser vers la zone souhaitée (barre latérale, pied de page).

- Dans les paramètres du widget, définissez un titre et masquez-le si vous le souhaitez. Dans la liste déroulante «Afficher», sélectionnez Toutes les catégories ou indiquez les catégories spécifiques à afficher.

- Enregistrez vos modifications.
Tout ce qui n’est pas inclus dans la liste des éléments «affichés» est automatiquement masqué dans ce widget. Remarque: l’extension contrôle la visibilité uniquement au sein de son propre widget. Elle n’affecte pas le flux d’accueil ni les archives; pour cela, revenez à la méthode 1.
Méthode 3. Hook pre_get_posts, masquer une catégorie par code
Si vous ne souhaitez pas installer une extension supplémentaire pour une seule fonction, vous pouvez vous en sortir avec quelques lignes dans functions.php. Cette méthode modifie la boucle principale de WordPress avant l’exécution de la requête: la catégorie est exclue au niveau de la base de données, pas simplement masquée.
Important: avant de modifier functions.php, effectuez une sauvegarde complète du site. Une erreur dans ce fichier plantera l’intégralité du site, et le restaurer sans sauvegarde sera difficile.
Voici un extrait de code fonctionnel. Il utilise le hook pre_get_posts et spécifie la catégorie à exclure de la page d’accueil:
1 /** 2 * Excludes the specified category from the home page. 3 * Replace -5 with your category ID (with a minus sign). 4 */ 5 function sdstudio_exclude_category_from_home( $query ) { 6 if ( ! is_admin() && $query->is_home() && $query->is_main_query() ) { 7 $query->set( 'cat', '-5' ); 8 } 9 return $query; 10 } 11 add_action( 'pre_get_posts', 'sdstudio_exclude_category_from_home' );
Dans la ligne 'cat', '-5', le nombre 5 est l’identifiant de la catégorie que vous devez masquer. Le signe moins signifie «exclure». Comment trouver l’ID de la catégorie souhaitée:
- Dans le panneau d’administration WordPress, ouvrez Articles → Catégories.
- Survolez le nom de la catégorie.
- En bas de l’écran (dans la barre d’état du navigateur), une URL apparaîtra du type
...taxonomy=category&tag_ID=6; le nombre aprèstag_ID=est l’ID.

Dans la capture d’écran, l’ID de la catégorie «Pays» est 6. Remplacez-le par votre propre numéro, enregistrez le fichier, et les articles de cette catégorie disparaîtront de la page d’accueil.
Où placer le code:
- Via FTP: connectez-vous au serveur, allez dans
/wp-content/themes/your-theme/, téléchargezfunctions.php, ajoutez le code à la fin du fichier (avant?>s’il est présent), puis renvoyez-le sur le serveur. - Via le panneau d’administration: ouvrez Apparence → Éditeur de thème, sélectionnez le thème actif, repérez
functions.phpdans la colonne de droite, insérez le code et cliquez sur «Mettre à jour le fichier».

Certains hébergeurs bloquent l’accès à l’éditeur de thème pour des raisons de sécurité. Dans ce cas, utilisez uniquement le FTP, ou revenez à l’extension de la méthode 1, qui résoudra le problème sans accès aux fichiers.
Ce qui est amélioré par rapport à la recette originale des anciens tutoriels: ajout de la vérification ! is_admin() (pour ne pas casser le panneau d’administration) et de $query->is_main_query() (pour ne pas affecter les requêtes secondaires des widgets et des menus). Sans ces vérifications, le code peut perturber le filtrage dans l’administration ou casser l’affichage des menus, ce qui a été vérifié en pratique.
Méthode 4. Masquer des catégories selon les rôles utilisateur
Imaginez la situation suivante: vous avez des articles premium réservés aux abonnés payants. Ou une documentation interne pour les employés. Ou encore une section privée pour les clients grossistes. Les méthodes classiques masquent la catégorie pour tout le monde, mais ici vous avez besoin que l’administrateur et les utilisateurs privilégiés la voient, tandis que les visiteurs et les abonnés de base ne la voient pas.
Auparavant, l’extension CaPa Protect était utilisée pour cette tâche, mais elle a été retirée du dépôt WordPress. Elle a été remplacée par une combinaison plus puissante: l’extension Members (plus de 300 000 installations, note de 4,7/5, version 3.2.22 en juin 2026) et un petit bout de code.

Procédure:
- Installez et activez Members via «Extensions → Ajouter une extension».
- Allez dans Utilisateurs → Rôles. Créez un rôle, par exemple «Abonné Premium», ou utilisez des rôles existants.
- Attribuez ce rôle aux utilisateurs concernés.
- Ajoutez un extrait de code dans
functions.phpqui vérifie le rôle de l’utilisateur actuel et exclut la catégorie pour tout le monde sauf les rôles autorisés:
1 /** 2 * Hides category with ID 5 from everyone except administrators 3 * and users with the premium_subscriber role. 4 */ 5 function sdstudio_hide_category_by_role( $query ) { 6 if ( is_admin() || ! $query->is_main_query() ) { 7 return $query; 8 } 9 10 $restricted_cat_id = 5; // replace with your category ID 11 12 if ( current_user_can( 'administrator' ) 13 || current_user_can( 'premium_subscriber' ) ) { 14 return $query; 15 } 16 17 $query->set( 'cat', '-' . $restricted_cat_id ); 18 return $query; 19 } 20 add_action( 'pre_get_posts', 'sdstudio_hide_category_by_role' );
Comment cela fonctionne: la fonction vérifie le rôle de l’utilisateur actuel via current_user_can(). Les administrateurs et les abonnés premium passent le filtre, la catégorie leur est visible. Tous les autres reçoivent une requête modifiée dont la catégorie est exclue. Le même crochet pre_get_posts, mais lié aux droits, pas à la page.
L’avantage de Members, c’est qu’il ne s’agit pas simplement d’une «astuce pour les catégories», mais d’un véritable éditeur de rôles et de droits. Après l’installation, vous pourrez contrôler la visibilité de n’importe quel élément du site: blocs Gutenberg, pages, éléments de menu, le tout via les rôles.
Tutoriel vidéo
Regardez un guide visuel couvrant les quatre méthodes, de l’installation de l’extension à la modification du code:
⁉️🤔 Foire aux questions
Pourquoi ne puis-je pas simplement masquer la catégorie avec du CSS?
display: nonesupprime le bloc visuellement, mais les robots des moteurs de recherche lisent toujours le contenu. Google considère un tel décalage entre le contenu visible et le contenu indexable comme une tentative de manipulation (cloaking). La sanction est un déclassement manuel ou l’exclusion des pages de l’index. La solution correcte est l’exclusion au niveau deWP_Query, pas en CSS.
Comment masquer une catégorie non seulement de la page d’accueil, mais aussi du flux RSS?
Ultimate Category Excluder (méthode 1) peut le faire nativement. Dans les paramètres de l’extension, sous l’onglet «Category Exclusion», cochez les catégories souhaitées et cochez la case à côté de «RSS Feeds». Si vous passez par le code (méthode 3), remplacez la condition
$query->is_home()par$query->is_home() || $query->is_feed(), et la catégorie disparaîtra également du flux.
Qu’advient-il du référencement après avoir masqué une catégorie?
Si vous avez masqué la catégorie correctement (via une extension ou
pre_get_posts), les pages de catégorie elles-mêmes et leurs articles restent accessibles par leurs URL directes et sont indexés. Seules la page d’accueil et les archives changent, les doublons disparaissent et le contenu utile reste dans l’index. Pour en être sûr, après avoir effectué les modifications, soumettez le sitemap dans la Google Search Console pour une nouvelle exploration.
Puis-je masquer une catégorie pour un utilisateur spécifique, et non pour un rôle?
WordPress ne dispose pas d’outils intégrés pour cela. La méthode 4 est conçue spécifiquement pour les rôles, il s’agit d’une limite architecturale du système de droits. Comme solution de contournement, vous pouvez créer un rôle distinct pour un utilisateur spécifique via Members et appliquer le code de la méthode 4. Techniquement, cela représente deux clics dans l’interface de l’extension.
Extension ou code, que choisir pour la maintenance à long terme du site?
Cela dépend du nombre de modifications. Pour masquer une catégorie une seule fois, le code dans
functions.php(méthode 3) est plus léger et n’ajoute pas de charge supplémentaire. Pour plusieurs catégories avec des conditions différentes (accueil, RSS, recherche), Ultimate Category Excluder (méthode 1) est plus facile à gérer. La règle principale: n’installez pas une extension pour une case à cocher qui peut être résolue avec trois lignes de code.
Que choisir pour votre besoin
Les quatre méthodes couvrent tous les scénarios réels. Une matrice simple vous aidera à vous orienter:
- Besoin rapide et sans code → Ultimate Category Excluder. Quelques clics, résultat immédiat, convient à la plupart des sites classiques.
- La catégorie ne gêne que dans la barre latérale → WP Categories Widget. Une solution ciblée sans effets de bord.
- Le site a déjà un minimum d’extensions, vous voulez le garder léger → crochet
pre_get_postsdansfunctions.php. Trois lignes de PHP, zéro code superflu. - Contenu avec restrictions d’accès par rôles → Members + l’extrait de la méthode 4. Un système de droits flexible qui vous sera utile pour d’autres tâches également.
Essayez la méthode la plus proche de votre situation. Si quelque chose ne fonctionne pas, revenez à la sauvegarde (vous en avez fait une, n’est-ce pas?) et essayez la suivante. Et dans les commentaires, dites-nous quelle méthode a fonctionné pour vous et pour quel type de projet vous avez masqué des catégories.



