#!/coding/blatt
Sammelsurium mit Schwerpunkten Linux & IT-Sicherheit

WordPress: Letzte Kommentare anzeigen (ohne Plugin)

Neben der Möglichkeit, die Top-Kommentatoren eures Blogs anzuzeigen, die ich bereits in einem anderen Beitrag vorgestellt habe, könnte man auch die zuletzt geschriebenen Kommentare auflisten.

Für WordPress gibt es für diese Zwecke zwar schon ein Standard-Widget und diverse Plugins, aber für diejenigen, welche bei der Ausgabe eventuell flexibler sein möchten bzw. mehr Gestaltungsfreiraum benötigen, denen zeige ich hier eine alternative Möglichkeit.

Wie könnte das ganze aussehen? Beispiel

Ein einfaches Beispiel für die Anzeige der letzten Kommentare eures Blogs:

Beispiel: Letzte Kommentare in WordPress anzeigen

Das Design könnt ihr mit ein wenig CSS beliebig an euer Blog-Design anpassen.

Code zum Ermitteln der letzten Kommentare

Der folgende Code kann in die functions.php eures Themes kopiert werden:

function get_latest_comments($limit = 5)
{
    global $wpdb;

    $results = $wpdb->get_results('
        SELECT
            c.comment_ID,
            c.comment_author,
            c.comment_content,
            p.ID,
            p.post_title
        FROM
            '.$wpdb->comments.' c
        INNER JOIN
            '.$wpdb->posts.' p ON (c.comment_post_id = p.ID)
        WHERE
            comment_approved = "1"
            AND c.comment_type = ""
            AND p.post_status != "trash"
        ORDER BY c.comment_date DESC
        LIMIT '.$limit.'
    ');

    $output = '<ul>';

    foreach ($results as $row)
    {
        $comment_url = get_comment_link($row->comment_ID);
        $comment_author = $row->comment_author;
        $comment_text = mb_substr($row->comment_content, 0, 50, 'utf-8').'...';
        $output .= '<li><a href="'.$comment_url.'" title="Kommentar zu: ' . $row->post_title . '">';
        $output .= $comment_author.': '.$comment_text;
        $output .= '</a></li>';
    }

    $output .= '</ul>';

    return $output;
}
PHP - Datei: functions.php

Im ersten Teil dieser Funktion (Zeile 1 - 22) werden die 5 zuletzt verfassten Kommentare aus der Datenbank geholt. Der zweite Teil (Zeile 24 - 36) dient dagegen der Zusammensetzung der Ausgabe. In diesem Fall erzeugen wir einfach für jeden Kommentar ein Listenelement <li>, welches wiederum einen Link enthält, der auf den entsprechenden Beitrag und den entsprechenden Kommentar verweist.

Kurze Erklärung der SQL-Anweisung im Detail

SELECT (Zeile 6 - 11)
Selektiert werden die Kommentar-IDs, die Namen der Kommentatoren, der Kommentar-Text, die zum Kommentar dazugehörige Post-ID (Beitrags-ID) und der Titel des Beitrags.

FROM (Zeile 12 - 15)
Wir beziehen uns auf die comments-Tabelle von WordPress und verbinden diese mittels einem JOIN noch mit der posts-Tabelle. Der Join erfolgt dabei über die Post-ID.

WHERE (Zeile 16 - 19)
Zu den Bedingungen zählen folgende Punkte:

  • der Kommentar wurde freigegeben
  • der Kommentar ist kein Trackback oder Pingback
  • der kommentierte Beitrag liegt nicht im Papierkorb (Trash)

ORDER BY & LIMIT (Zeile 20 - 21)
Geordnet werden die selektierten Datenätze absteigend nach dem Kommentar-Datum. Weiterhin wird noch festgelegt, wie viele Kommentare aus der Datenbank geholt werden (standardmäßig sind es 5).

Code zum Anzeigen der letzten Kommentare

Der folgende Code kann an beliebige Stelle in eurem WordPress-Theme platziert werden. Möchte man also z.B. die Liste der letzten 10 Kommentare in der Sidebar anzeigen, kann man den folgenden Code z.B. in die sidebar.php einfügen.

echo get_latest_comments(10);
PHP - Datei: sidebar.php

Fazit

Je nachdem, wie ihr die Ausgabe haben wollt, könnt ihr den Beispiel-Code natürlich individuell anpassen.

Es wäre z.B. auch möglich noch zusätzlich anzugeben, wann der Kommentar geschrieben wurde. Hierfür müsste man einfach aus der Datenbank noch das Datum holen und mit in die Ausgabe integrieren.

Außerdem könnte man noch eine Einschränkung vornehmen, so dass eigene Kommentare, also Kommentare vom Admin, nicht angezeigt werden.

Aktualisierungshistorie:
  • 19. April 2012
    ursprüngliche Veröffentlichung in meinem ehemaligen Blog "Smart-Webentwicklung"