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.

Empfohlene Beiträge

Noch kein Kommentar, Füge deine Stimme unten hinzu!


Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert