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

WordPress: Anzahl Kommentare aller Artikel pro Autor

10. September 2013
Stephan
WordPress: Anzahl der Kommentare aller Artikel eines Autors anzeigen (ohne Plugin)

Vor kurzem hatte ich beschrieben, wie ihr in WordPress die Anzahl der Kommentare pro Kategorie ermitteln und z.B. in eurer Sidebar anzeigen lassen könnt.

Analog dazu ist es auch möglich, pro Autor die Anzahl der Kommentare auf die jeweils veröffentlichten Artikel zu zählen und anzeigen zu lassen.

Insbesondere für WordPress-Blogs mit vielen Autoren, seien es nun Stamm- oder Gastautoren, kann das für Statistik-Liebhaber recht interessant sein. Ihr könnt so feststellen, welcher Autor mit seinen Artikeln eure Besucher am meisten zum Kommentieren anregt.

In diesem Artikel erfahrt ihr, wie ihr das Ganze mit einem einfachen Code-Schnipsel ohne Einsatz eines Plugins umsetzen könnt.

Wie könnte das am Ende ausschauen?

Ein Beispiel wäre z.B. die Anzeige der Top-3-Autoren deren Artikel am meisten kommentiert wurden. Die Namen der Autoren könntet ihr dann z.B. auf die Autorenseite verlinken.

WordPress: Top-3-Autoren nach Kommentaranzahl

Der Code zum Ermitteln der Kommentaranzahl aller Artikel pro Autor

Wie (fast) immer müsst ihr den folgenden Code in die functions.php eures Themes einfügen:

function get_comments_count_per_author_posts()
{
    global $wpdb;
	
    $results = $wpdb->get_results('
        SELECT
            u.display_name,
            COUNT(c.comment_ID) AS comment_count_per_author
        FROM
            ' . $wpdb->users . ' u
        INNER JOIN
            ' . $wpdb->posts . ' p ON (p.post_author = u.ID)
        INNER JOIN
            ' . $wpdb->comments . ' c ON (c.comment_post_id = p.ID)
        WHERE
            comment_approved = "1"
            AND c.comment_type NOT IN ("trackback", "pingback")
            AND p.post_status = "publish"
        GROUP BY p.post_author
    ');
	
    $output = '<ul>';

    foreach($results as $row)
    {
        $output .= '<li>' . $row->display_name . ' (' . $row->comment_count_per_author . ')</li>';
    }
	
    return $output . '</ul>';
}

Kurze Erklärung der SQL-Anfrage

Im Folgenden findet ihr eine kurze Erklärung der einzelnen Code-Zeilen der SQL-Anfrage:

Zeile 6 – 8
Wir selektieren die Namen der Autoren und die ermittelte Anzahl der Kommentare.

Zeile 9 – 14
Mithilfe von JOINS verbinden wir die Datensätze aus den Tabellen users, posts und comments.

Zeile 15 – 18
Zu unseren Bedingungen zählen:

  • Kommentar ist freigeschaltet
  • Kommentar ist kein Track- oder Pingback
  • Status des Artikel ist „veröffentlicht“

Hier könntet ihr auch noch angeben, dass die Kommentare des Autors nicht mitgezählt werden.

Zeile 19
Hiermit veranlassen wir eine Gruppierung der Datensätze basierend auf der User-ID.

Code zur Anzeige

Zum Anzeigen einer Liste mit den Namen aller Autoren und der Anzahl der auf alle Artikel des Autors abgegebenen Kommentare, dient folgende Zeile:

echo get_comments_count_per_author_posts();

Diesen Code könnt ihr beispielsweise in eure sidebar.php einfügen, damit die Liste in eurer Sidebar angezeigt wird.

Nur Top-3 ausgeben

Wenn ihr z.B. nur die Top-3-Autoren ausgeben wollt, dann einfach die SQL-Anfrage wie folgt ergänzen:

[...]
ORDER BY
    comment_count_per_author DESC
LIMIT
    3

Fazit

Mit diesem Code-Schnipsel findet ihr leicht heraus, welche Autoren die diskussionsreichsten bzw. meistkommentierten Artikel in eurem Blog schreiben.

Würde euch interessieren, welcher Autor eures Blogs die meistkommentierten Artikel publiziert?

Kommentare  
6 Kommentare vorhanden
1 Toni schrieb am 10. September 2013 um 15:48 Uhr

Ich danke dir für den Beitrag 🙂
Immerwieder hilfreich, vorallem mit dem übersichtlichem Quellcode den du anbietest! Gefällt mir echt gut!

2 Marcus schrieb am 10. September 2013 um 17:36 Uhr

Hallo!

Dein Kommentar hat, soweit ich sehe, aber noch einen kleinen Fehler:

Der Code zählt auch die Kommentare des Blog-Autors. Das sollte man mit der WHERE-Klausel noch ausschließen

3 Stephan L. schrieb am 10. September 2013 um 17:46 Uhr

Hallo,

@Toni: Danke dir! Freue mich, wenn dir meine Artikel gefallen und vielleicht ab und an auch weiterhelfen. 😉

@Marcus: Jup, dem bin ich mir bewusst. Hatte ich aber auch im Artikel geschrieben, dass man das in der where-Klausel noch mit angeben kann.

Du müsstest nur Folgendes hinzufügen:

AND p.post_author != c.user_id

Beste Grüße

Stephan

4 Hermann schrieb am 28. September 2013 um 16:58 Uhr

Super Code für Blogs mit vielen Autoren. So sieht man gleich wer richtig zu Diskussionen anregt.

5 Marc schrieb am 25. Juli 2015 um 16:28 Uhr

Danke für dein Tipp! Habe in letzter Zeit überall nach sowas gesucht und bin jetzt endlich fündig geworden.

6 Peter schrieb am 8. März 2016 um 17:53 Uhr

Genau nach so einer Lösung habe ich gesucht. Hier habe ich sie gefunden, herzlichen Dank dafür 🙂 Damit hat man die Möglichkeit herauszufinden, welche Autoren man noch mehr unterstützen muss, da diese den wertvollsten Content für die Leser (= mit der höchsten Interaktion) schreiben.

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

Vielen Dank für dein Kommentar!