smart | Webentwicklung
Alles rund um HTML5, PHP, WordPress & Co.

WordPress: Anzahl Kommentare pro Kategorie anzeigen

5. August 2013
Stephan
WordPress: Anzahl der Kommentare 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 mal wieder 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 Blogs mit der dazugehörigen Anzahl an Kommentaren aufgelistet ist:

Beispiel: Anzahl Kommentare pro Kategorie in WordPress anzeigen

Zweifelsohne erkennt ihr, dass hier im Blog die Artikel zum Thema WordPress am häufigsten kommentiert werden.

Der Code zum Ermitteln der Kommentaranzahl pro Kategorie

Den folgenden Codeschnipsel 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>';
}

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 Komentaranzahl.

Die SQL-Anfrage kurz erklärt

Im Folgenden noch eine kurze Erklärung der einzelnen Zeilen des SQL-Queries bzw der SQL-Anfrage:

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.

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

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.

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.

Der 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:

<? echo get_comments_count_per_category(); ?>

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

In diesem Fall würden nur die ersten 5 Kategorien, also die mit den meisten Kommentaren, angezeigt werden.

Fazit

Das Wissen über die Anzahl der Kommentare pro Kategorie 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.

Was haltet ihr von der Möglichkeit, die Anzahl der Kommentare pro Kategorie zu ermitteln?

Kommentare  
8 Kommentare vorhanden
1 Mario schrieb am 8. August 2013 um 14:59 Uhr

Gibts denn da nicht schon ein plugin für? Ansonsten find ich die Möglichkeit echt klasse. Vor allem für Newsseiten. Und wenn es irgendwie möglich ist, die Spamkommentare aus den Statistiken rauszufiltern.

2 Stephan L. schrieb am 11. August 2013 um 09:37 Uhr

Hallo Mario,

generell gibts wahrscheinlich schon für fast alles ein WordPress-Plugin. Ich probiere aber gerne aus, wie man solche Funktionalitäten auch selbst implementieren kann.

Was die Spamkommentare angeht, so solltest du mal das Plugin Antispam Bee einsetzen, dann sollten die gar nicht erst durch kommen und somit auch nicht mit in die Berechnung einfließen.

Gruß Stephan

3 Sven schrieb am 19. August 2013 um 18:59 Uhr

Das ist mal ein nützlicher Code, den ich so noch nirgends gesehen habe. Muss ich mal testen, mal sehen wo ich am meisten Kommentare habe.

Anti Spam Bee habe ich auch im einsatz und seither habe ich keinen Spam mehr.

4 Stephan L. schrieb am 20. August 2013 um 19:45 Uhr

Hi Sven,

vielen Dank für deine postives Feedback. 😉

Grüße

Stephan

5 Irys schrieb am 26. August 2013 um 14:36 Uhr

Danke für den Tipp, ich werde mal versuchen ob ich das in meinen Blog bekomme.

6 Marlon schrieb am 27. August 2013 um 10:23 Uhr

Sehr nette Geschichte auf jeden Fall, kann ich zwar nicht wirklich für mich gebrauchen doch falls der Tag kommen sollte ist es zumindest schon einmal gesichert. Ich würde liebend gerne auf so manches Plugin verzichten können, da ich mir immer vorkomme als würde ich mit jedem weiteren meinen WordPress Blog „zumüllen“.

7 Ar-City schrieb am 31. August 2013 um 11:10 Uhr

Hallo,
die Funktion ist wirklich ganz gut. Mit dieser Funktion lässt sich auf jeden Fall einige A/B-Test oder sowas ähnliches vornehmen.

Zudem ist es natürlich für die Statistiker-Fans eine gute Funktion. Vor allem kann man sich anhand der Emotionen und die Anzahl der Kommentare Schwerpunkte im Blog anlegen.

LG

8 Thomas schrieb am 10. September 2013 um 09:34 Uhr

Vielen Dank für den Tipp. Den kann ich als Newbie auch umsetzten. Danke

0 Trackbacks/Pingbacks vorhanden
Du bist herzlich eingeladen auch ein Kommentar zu hinterlassen!
Kommentar schreiben

Vielen Dank für dein Kommentar!