WordPress | WP_Requête | Obtenez le dernier port de la catégorie et des sous-catégories

Publié par Jean-Michel le

J’ai écrit un thème pour WordPress et j’aime avoir les derniers articles publiés dans la catégorie et ses sous-catégories à afficher au-dessus de tout autre article.

Un exemple. Disons que j’ai les catégories suivantes:

Cat 1
    Cat 1 - 1
    Cat 1 - 2
        Cat 1 - 2 - 1

Et puis je crée les posts suivants :

Post #5   |   Cat 1 - 2       | Date 2013
Post #4   |   Cat 1 - 1       | Date 2012
Post #3   |   Cat 1 - 2       | Date 2011
Post #2   |   Cat 1           | Date 2010
Post #1   |   Cat 1 - 1 - 2   | Date 2009

Au début, lorsque je navigue vers Cat 1 , je ne reçois pas comme dernier message le Post # 5 qui appartient au Cat 1 – 2 où il est sous-catégorie du Cat 1 , mais à la place, je reçois le Post # 2 .

Actuellement j’utilise ce code :

$categoryID         =   get_query_var('cat');

$args   =   array(
    'post_type'         =>  'post',
    'posts_per_page'    =>  1,
    'category__in'      =>  array($categoryID),
    'post_status'       =>  'publish'
);

$eiPost =   new WP_Query($args);

Le problème est que ce code renvoie le dernier message uniquement à partir de la catégorie de niveau supérieur et non des sous-catégories. Comment puis-je modifier ce code, afin de récupérer les derniers articles de toutes les sous-catégories et de la catégorie supérieure ?

Y-a t’il une solution à ce problème ?

Solution n°1 trouvée

'category__in'affiche uniquement les publications de cette catégorie, pas les catégories enfants.

Essayez d’utiliser 'cat' => $categoryIDinsted. Donc tu $argsserais :

$args   =   array(
'post_type'         =>  'post',
'posts_per_page'    =>  1,
'cat'      =>  $categoryID,
'post_status'       =>  'publish'
);

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

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