Blog WordPress : Exclure une catégorie de la page d’accueil
Comme moi, vous n’avez peut-être pas envie de créer une page spécifique pour la page d’accueil de certains sites. Mais comment personnaliser des éléments sur la page d’accueil au format blog sur WordPress sans se prendre la tête.
Nous allons utiliser le plugin WpCode qui permet d’ajouter facilement des extraits de code et de personnaliser WordPress. Pas besoin d’un thème enfant ou d’une énième extension pour faire une simple action.
Pour l’utilisation de WPCode, tu peux te référer à cet article dans lequel j’explique comment afficher une liste d’articles aléatoires sur WordPress.
Code à insérer dans WP pour rendre invisible une catégorie sur la page d’accueil
Voici le code à insérer dans WPcode pour faire disparaître de la page d’accueil tous les articles d’une catégorie WordPress. Très pratique pour un site de vente de liens par exemple, si vous avez une rubrique plus généraliste sur un site plutôt thématique.
function exclude_category_from_homepage($query) {
if ($query->is_home() && $query->is_main_query()) {
$query->set('cat', '-17');
}
}
add_action('pre_get_posts', 'exclude_category_from_homepage');
Ici le code retire la catégorie qui a l’ID numéro 17.
Pour trouver l’ID de la catégorie que vous voulez faire disparaître, vous pouvez aller sur Articles -> Catégories puis faire glisser la souris sur modifier et regarder l’url pour repérer le numéro. Exemple :
Sachez que cette astuce fonctionne aussi pour retrouver l’ID d’un post ou d’une page.
Explication du Code
pre_get_posts
: Ce hook est utilisé pour modifier la requête principale de WordPress avant qu’elle ne soit exécutée.$query->is_home()
: Vérifie si la requête concerne la page d’accueil.$query->is_main_query()
: Vérifie s’il s’agit de la requête principale (et non d’une requête secondaire comme celles générées par des widgets ou d’autres plugins).$query->set('cat', '-17')
: Modifie la requête pour exclure la catégorie avec l’ID 17. Le signe moins (-
) avant l’ID de la catégorie indique l’exclusion.
Et si vous souhaitez retirer plusieurs catégories de votre page d’accueil, voici comment procéder :
function exclude_categories_from_homepage($query) {
if ($query->is_home() && $query->is_main_query()) {
// Exclure les catégories avec les IDs 15, 25, et 12
$query->set('cat', '-17,-15,-25,-12');
}
}
add_action('pre_get_posts', 'exclude_categories_from_homepage');
Encore une fois, il vous suffit de remplacer les numéros d’ID de catégorie par les vôtres.
J’espère que cette petite astuce sera utile, pensez à la partager.