WordPress: Kommentaranzahl aller Artikel pro Autor 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 Beitrag erfahrt ihr, wie ihr das Ganze mit einem einfachen Code-Schnipsel ohne Einsatz eines Plugins umsetzen könnt.

Beispiel, wie es aussehen könnte

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.

Anzahl Kommentare pro Autor

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>';
}
PHP - Datei: functions.php

Kurze Erklärung der SQL-Anweisung im Detail

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

SELECT (Zeile 6 - 8)
Wir selektieren die Namen der Autoren und die ermittelte Anzahl der Kommentare.

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

WHERE (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.

GROUP BY (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();
PHP

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

Nur die 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.

Aktualisierungshistorie:
  • 10. September 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).