Vous cherchez un moyen de compter tous les articles d'une catégorie et de l'afficher dans WordPress ? Bien qu'il existe probablement un plugin pour cela, nous avons créé un extrait de code rapide que vous pouvez utiliser pour compter tous les articles d'une catégorie dans WordPress.
Instructions :
Il vous suffit d'ajouter ce code au fichier functions.php de votre thème ou dans un plugin spécifique au site :
function count_cat_post($category) {
if(is_string($category)) {
$catID = get_cat_ID($category);
}
elseif(is_numeric($category)) {
$catID = $category;
} else {
return 0;
}
$cat = get_category($catID);
return $cat->count;
}
Vous pouvez utiliser ce code pour afficher le nombre de publications d'une catégorie n'importe où sur votre site, soit par ID de catégorie, soit par nom de catégorie :
<?php
// echo count_cat_post('1');
// echo count_cat_post('General');
?>
Supprimez simplement '//' de n'importe quelle ligne de code pour l'utiliser.
Remarque : Si c'est la première fois que vous ajoutez des extraits de code dans WordPress, veuillez consulter notre guide sur la manière d'ajouter correctement des extraits de code dans WordPress, afin de ne pas endommager accidentellement votre site.
Si vous avez aimé cet extrait de code, n'hésitez pas à consulter nos autres articles sur le site tels que : 15 meilleurs outils de marketing de contenu et comment créer un formulaire de contact dans WordPress.
Salut,
Comment puis-je utiliser la même fonction mais avec la relation « ET ».
seuls les articles qui ont les deux catégories seront retournés.
Comment pouvons-nous passer l'ID ou le nom dynamiquement ?
Vous pouvez passer une variable à la fonction. Par exemple, vous pourriez passer l'ID de la première catégorie retournée par la fonction
get_the_category(): https://developer.wordpress.org/reference/functions/get_the_category/Notez que cela nécessite de travailler avec des tableaux et des objets, car la valeur retournée par
get_the_category()est un tableau d'objets.Par exemple, vous pourriez utiliser :
$cat = get_the_category();
$cat_id = $cat[0]->cat_ID;//Récupère le premier id
Avec la dernière version de WP, il y a eu quelques bugs qui empêchaient tout cela de fonctionner immédiatement, donc si quelqu'un d'autre a des problèmes :
function count_cat_post($catslug){
$CategoryTerms = get_term_by('slug', $catslug, 'category');
if(!$CategoryTerms){
return 0;
}
return $CategoryTerms->count;
}
Bonjour Jason,
Merci pour cela. Cependant, nous avons pu tester sur WordPress 5.4 et cela fonctionne pour nous sans erreurs.
AUSSI,
utilisez get_the_category car get_category générera une erreur avec les dernières versions de WordPress sur tout ce qui a des publications et retournera 0 sur ceux qui n'en ont pas, causant un petit casse-tête de dépannage.
Nous ne voyons pas cela. Quel est le message d'erreur que vous recevez ?
aussi ça :
return $cat->category_count;
car count est une fonction php.
$catest un objetWP_Term, aveccountétant une propriété publique entière.y a-t-il un moyen de ne pas mettre le nom ou l'id de la catégorie ? j'ai tellement de catégories. je ne peux pas venir dans le code et ajouter chaque id ou nom dans le code. j'ai besoin que wordpress le fasse automatiquement.
Dans votre modèle, il y aura une zone où le nom de la catégorie est affiché, il y a probablement une partie qui utilise une variable égale à l'id ou au slug de la catégorie, que vous pouvez utiliser à la place pour obtenir le compte. Quelque chose qui finit par ressembler à :
// echo count_cat_post($cat_id);
Vous pourriez utiliser une boucle
forpour parcourir les catégories. Vous pourriez vouloir utiliserget_categories()dans ce cas : https://developer.wordpress.org/reference/functions/get_categories/