Hört sich einfach an, aber sollen die Unterkategorie Posts der Oberkategorie zugezählt werden, so geht das nicht so ganz einfach. Hier ein Beispiel und die Umsetzung
Für meinen Musik-Blog wollte ich mir gerne die Anzahl aller gelisteten Alben anzeigen lassen.
Das ist die Struktur: Es gibt 2.104 Alben, davon sind 670 Alben Diskografien zugeordnet.
Der Code für diese Ausgabe lautet im Template:
<ul>
<?php wp_list_categories( array(
'orderby' => 'name',
'title_li' => '',
'show_count' => true
) ); ?>
</ul>
Doch wenn ich jetzt den Code anpasse und die Unterkategorien ausblende – durch Ergänzung um eine „exclude“-Angabe der Kategorien ID 6 und 8.
so zum Beispiel:
<ul>
<?php wp_list_categories( array(
'orderby' => 'name',
'title_li' => '',
'show_count' => true,
'exclude' => array( 6,8 )
) ); ?>
</ul>
Dann ergibt sich folgende Anzeige:
Resultat: Wenn ich die Unterkategorien ausblende (exclude), dann werden diese auch nicht mitgezählt.
Die richtige Gesamtzahl – Lösung:
Fündig wurde ich bei intechgrity.
Dazu in der functions.php des Themes folgenden Code kopieren und einfügen:
function wp_get_cat_postcount($id) {
$cat = get_category($id);
$count = (int) $cat->count;
$taxonomy = 'category';
$args = array(
'child_of' => $id,
);
$tax_terms = get_terms($taxonomy,$args);
foreach ($tax_terms as $tax_term) {
$count +=$tax_term->count;
}
return $count;
}
Diese Funktion und das damit verbundene Ergebnis kann jetzt im Theme an beliebiger Stelle durch den folgenden Code aufgerufen werden:
Hierzu lediglich die ID der Kategorie eintragen (in meinem Fall die Kategorie ID 15 „Musik-Alben“. Und das Ganze evtl. in Text einbetten.
Das Musik-Archiv mit insgesamt <?php echo wp_get_cat_postcount(15); ?> Alben
Das Ergebnis:
zu sehen im funkygog-blog auf der Startseite.
Noch kein Kommentar, Füge deine Stimme unten hinzu!