Suchen Sie nach einer Möglichkeit, alle Beiträge einer Kategorie zu zählen und sie in WordPress anzuzeigen? Obwohl es dafür wahrscheinlich ein Plugin gibt, haben wir einen schnellen Code-Schnipsel erstellt, den Sie verwenden können, um alle Beiträge einer Kategorie in WordPress zu zählen.
Anweisungen:
Sie müssen diesen Code nur zur functions.php-Datei Ihres Themes oder in ein websitespezifisches Plugin einfügen:
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;
}
Sie können diesen Code verwenden, um die Beitragsanzahl einer Kategorie überall auf Ihrer Website anzuzeigen, entweder nach Kategorie-ID oder nach Kategorienamen:
<?php
// echo count_cat_post('1');
// echo count_cat_post('General');
?>
Entfernen Sie einfach '//' aus einer beliebigen Codezeile, um sie zu verwenden.
Hinweis: Wenn Sie zum ersten Mal Code-Schnipsel in WordPress hinzufügen, lesen Sie bitte unseren Leitfaden, wie Sie Code-Schnipsel richtig in WordPress hinzufügen, damit Sie Ihre Website nicht versehentlich beschädigen.
Wenn Ihnen dieser Code-Schnipsel gefallen hat, sollten Sie sich unsere anderen Artikel auf der Website ansehen, wie z. B.: 15 beste Content-Marketing-Tools und So erstellen Sie ein Kontaktformular in WordPress.
Hallo,
Wie kann ich dieselbe Funktion verwenden, aber mit der 'UND'-Beziehung.
nur Beiträge, die beide Kategorien haben, werden zurückgegeben.
Wie können wir die ID oder den Namen dynamisch übergeben?
Sie können eine Variable an die Funktion übergeben. Zum Beispiel könnten Sie die erste zurückgegebene Kategorie-ID der Funktion
get_the_category()übergeben: https://developer.wordpress.org/reference/functions/get_the_category/Beachten Sie, dass dies die Arbeit mit Arrays und Objekten erfordert, da der von
get_the_category()zurückgegebene Wert ein Array von Objekten ist.Zum Beispiel könnten Sie verwenden:
$cat = get_the_category();
$cat_id = $cat[0]->cat_ID;//Holt die erste ID
Mit der neuesten Version von WP gab es einige Fehler, die dies sofort funktionierten, also wenn jemand anderes Probleme hat:
function count_cat_post($catslug){
$CategoryTerms = get_term_by('slug', $catslug, 'category');
if(!$CategoryTerms){
return 0;
}
return $CategoryTerms->count;
}
Hallo Jason,
Danke dafür. Wir konnten es jedoch auf WordPress 5.4 testen und es funktioniert bei uns ohne Fehler.
AUCH,
verwenden Sie get_the_category, da get_category bei den neuesten Versionen von WordPress bei allem, was Beiträge hat, einen Fehler ausgibt und bei denen, die keine haben, 0 zurückgibt, was zu einem kleinen Troubleshooting-Rätsel führt.
Das sehen wir nicht. Welche Fehlermeldung erhalten Sie?
auch es:
return $cat->category_count;
da count eine PHP-Funktion ist.
$catist einWP_Term-Objekt, wobeicounteine öffentliche int-Eigenschaft ist.Gibt es eine Möglichkeit, den Kategorienamen oder die ID nicht anzugeben? Ich habe so viele Kategorien. Ich kann nicht zum Code gehen und jede ID oder jeden Namen im Code hinzufügen. WordPress soll das automatisch machen.
In Ihrer Vorlage gibt es einen Bereich, in dem der Kategoriename ausgegeben wird. Wahrscheinlich gibt es einen Teil davon, der eine Variable verwendet, die der Kategorie-ID oder dem Slug entspricht, die Sie stattdessen verwenden können, um die Anzahl abzurufen. Etwas, das so endet:
// echo count_cat_post($cat_id);
Sie könnten eine
for-Schleife verwenden, um durch die Kategorien zu iterieren. Möglicherweise möchten Sie in diesem Fallget_categories()verwenden: https://developer.wordpress.org/reference/functions/get_categories/