Comment afficher uniquement les articles d’une catégorie (et pas les articles des catégories enfants) dans Elementor

Afin de hiérarchiser les articles, WordPress vous permet d’utiliser des catégories et des sous catégories. Ceci permet de sectoriser finement vos contenus.

WordPress par défaut dans une catégorie affiche les posts enfants direct de cette catégorie, ainsi que les articles présents dans la sous catégorie. Ce réglage convient dans la plupart des cas, mais vous pouvez avoir le besoin de n’afficher que les articles enfants directs de la catégorie en cours. C’est ce que nous allons voir, et plus précisement dans Elementor. Pour cela nous allons intervenir sur la loop et sa query via un id de requête et pour bien comprendre cet article servira d’introduction : https://www.soon7.net/revue-du-web/comprendre-et-utiliser-la-puissance-de-la-loop-de-wordpress/

Le template archive catégorie

Nous avosn créé dans Elementor un template archive spécifiquement pour une catégorie donnée, et on indique un ID de requête à un bloc « Publications », dans notre cas : « afficher_posts_directs »

Grâce à l’id de requête, nous allons pouvoir intervenir dans la query, et indiquer qu’on veut UNIQUEMENT les articles de la catégorie en cours et pas les articles des sous catégories.

La documentation de la WP_QUERY

En lisant la doc officielle de la wp_query, (https://developer.wordpress.org/reference/classes/wp_query/), on voit qu’il y a 2 moyens pour récupérer les articles d’une catégorie donnée,

  • ‘cat’ qui va sélectionner les posts de la catégorie et des sous catégories
  • ‘category__in’ qui ne sélectionnera QUE les articles enfants directs de la catégorie (et ne ramènera donc pas les articles des sous catégorie)

Code

L’idée est donc de dire à la query d’utiliser le paramètre ‘category__in’ avec la valeur de l’id de la catégorie actuelle utilisée dans la loop.

Pour se faire, on va utiliser un filtre personnalisé sur la requête de notre bloc publication, grâce à l’id qu’on a choisi pour faire la liaison, à savoir : « afficher_posts_directs »

function query_posts_directs($query)
{
// On indique ici par l'usage de category__in qu'on veut uniquement les posts directs de la catégorie et pas ceux des sous catégories
// On ne sélectionne que les articles de la catégorie actuelle du contexte de la loop, en récupérant l'id de la catégorie actuelle via la query elle
// meme avec $query->get('cat')
    $query->set('category__in', $query->get('cat'));
}

// On fait la liaison avec l'ID de la requete du bloc
add_action('elementor/query/afficher_posts_directs', 'query_posts_directs');

https://developers.elementor.com/docs/hooks/custom-query-filter/

Picture of mike

mike

Chef de projet web, Mike assure la réussite de projets digitaux depuis 2011. Son but est d'aider les webmasters et les freelances à tirer le meilleur des outils comme WordPress, WooCommerce et Elementor. Sur ce blog il partage son expérience, ses astuces et les pépites dénichées sur le web. Côté pro, Mike adore apprendre de nouveaux trucs et faire progresser les autres, et côté perso les afters, faire des shoots de baskets et les films d'horreur. La légende raconte qu'avec un mojito il vous accordera +4xp de confiance

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Thématiques

Vous recherchez des astuces dans un secteur donné ? Vous pouvez accéder directement à la catégorie qui vous intéresse !