WordPress: Kommentaranzahl pro Kategorie anzeigen (ohne Plugin)

Habt ihr euch schon immer mal gefragt, welche Kategorie eures Blogs eigentlich am besten bei euren Lesern ankommt? Welche Katgeorien haben das meiste Diskussionspotenzial und werden am meisten kommentiert?

Für die Statistikfreunde unter euch habe ich diesbezüglich einen kleinen Codeschnipsel für WordPress parat, mit dem ihr die Anzahl der Kommentare pro Kategorie ermitteln und anzeigen könnt. Auf einen Blick lässt so feststellen, welche Kategorie am meisten bzw. am wenigsten kommentiert wird.

Wie könnte unsere Anzeige am Ende aussehen?

Im Folgenden ein einfaches Beispiel bei dem die Top 5 Kategorien meines ehemaligen WordPress-Blogs mit der dazugehörigen Anzahl an Kommentaren aufgelistet ist:

Anzahl Kommentare pro Kategorie

Code zum Ermitteln der Kommentaranzahl pro Kategorie

Den folgenden Code-Schnipsel fügt ihr einfach in die functions.php eures WordPress-Themes:

function get_comments_count_per_category()
{
    global $wpdb;

    $results = $wpdb->get_results('
        SELECT
            t.name,
            SUM(p.comment_count) AS comment_count
        FROM
            ' . $wpdb->posts . ' p
        INNER JOIN
            ' . $wpdb->term_relationships . ' tr ON (tr.object_id = p.ID)
        INNER JOIN
            ' . $wpdb->term_taxonomy . ' tt ON (tt.term_taxonomy_id = tr.term_taxonomy_id)
        INNER JOIN
            ' . $wpdb->terms . ' t ON (t.term_id = tt.term_id)
        WHERE
            tt.taxonomy = "category"
            AND p.post_status = "publish"
        GROUP BY
            t.term_id
        ORDER BY
            comment_count DESC
    ');

    $output = '<ul>';

    foreach($results as $row)
    {
        $output .= '<li>' . $row->name . ' (' . $row->comment_count . ')</li>';
    }

    return $output . '</ul>';
}
PHP - Datei: functions.php

Im ersten Teil der Funktion (Zeile 5 - 24) erstellen wir uns einen sogenannten SQL-Query mit dem wir aus der Datenbank die Anzahl aller Kommentare einer Kategorie ermitteln. Anschließend erzeugen wir eine Liste mit den Namen der Kategorien und deren Kommentaranzahl.

Kurze Erklärung der SQL-Anweisung im Detail

SELECT (Zeile 6 - 8)
Als Ergebnis möchten wir alle Kategorienamen und die dazugehörige Anzahl der Kommentare haben. Da die Anzahl der Kommentare in der Datenbank je Artikel abgespeichert ist, müssen die einzelnen Kommentaranzahlen mittels SUM zusammenaddiert werden.

FROM (Zeile 9 - 16)
Hier verbinden wir die posts-Tabelle mittels JOIN mit der terms-Tabelle. Erstere beinhaltet die Information, wie viele Kommentare pro Artikel es gibt und letztere die Namen der dazugehörigen Kategorien.

WHERE (Zeile 17 - 19)
Als Bedingung geben wir an, dass wir nur Taxonomien des Typs category berücksichtigen wollen. Außerdem sollen die Artikel alle veröffentlicht sein.

GROUP BY & ORDER BY (Zeile 20 - 23)
Gruppierung der Ergebnisse auf Basis der ID der terms-Tabelle und somit Gruppierung der Ergebnisse auf Basis der Kategorien. Zudem werden die gefundenen Datensätze absteigend sortiert, damit an erster Stelle gleich die Kategorie mit den meisten Kommentaren gelistet ist.

Code zur Anzeige der Anzahl der Kommentare pro Kategorie

Wie immer ist euch selbst überlassen an welcher Stelle in eurem Theme ihr das Ergebnis dieses Codeschnipsels anzeigt. Für die Anzeige in der Sidebar könntet ihr folgenden Code z.B. in die sidebar.php eures Themes einfügen:

<?php echo get_comments_count_per_category(); ?>
PHP - Datei: sidebar.php

Nur die Top 5 anzeigen

Eventuell habt ihr sehr viele Kategorien, so dass eine Liste mit allen Kategorien nicht so schön ist. In diesem Fall könnt ihr die SQL-Anfrage wie folgt ergänzen:

[...]
ORDER BY
    comment_count DESC
LIMIT
    5

Fazit

Die Anzahl der Kommentare pro Kategorie zu kennen, kann euch dabei helfen, euren Blog zu optimieren. Beispielsweise könntet ihr euch darauf konzentrieren in Zukunft häufiger Artikel für die beliebtesten Kategorien zu veröffentlichen.

Aktualisierungshistorie:
  • 5. August 2013
    ursprüngliche Veröffentlichung in meinem ehemaligen Blog "Smart-Webentwicklung"
Feedback

Für Feedback zum Beitrag, seien es Fragen, Korrigierungen und/oder Anregungen, könnt ihr mir gerne eine Nachricht per E-Mail oder Mastodon schreiben (siehe Kontakt).