WordPress: Top-Kommentatoren anzeigen (ohne Plugin)
In diesem Beitrag zeige ich euch, wie ihr ohne Einsatz eines zusätzlichen Plugins die Top-Kommentatoren eures WordPress-Blogs anzeigen könnt.
Für die Leser eures Blogs kann es ein schöner Anreiz sein, zu wissen, dass die Top-Kommentatoren z.B. auf der Startseite eures Blogs angezeigt und verlinkt werden. Dadurch wird das Kommentieren für die Leser eventuell interessanter, wodurch ihr mehr Kommentare und somit Feedback zu euren Beiträgen erhaltet.
Code zum Ermitteln der Top-Kommentatoren
Der folgende Code kann im Ganzen in die functions.php eures Themes kopiert werden:
function get_top_commentators($dayInterval = 30, $limit = 5)
{
global $wpdb;
$results = $wpdb->get_results('
SELECT
COUNT(comment_author_email) AS comments_count,
comment_author,
comment_author_url
FROM
'.$wpdb->comments.'
WHERE
comment_author_email != ""
AND user_id != 1
AND comment_type = ""
AND comment_approved = 1
AND comment_date >= DATE_SUB(CURDATE(), INTERVAL '.$dayInterval.' DAY)
GROUP BY
comment_author_email
ORDER BY
comments_count DESC,
comment_author ASC
LIMIT '.$limit.'
');
$output = '<ul>';
foreach($results as $row)
{
$url = $row->comment_author_url;
$title = $row->comment_author;
$text = $row->comment_author;
$output .= '<li>';
$output .= '<a href="'.$url.'" title="'.$title.'">';
$output .= $text.'</a>';
$output .= '('.$row->comments_count.')';
$output .= '</li>';
}
$output .= '</ul>';
return $output;
} Diese Funktion macht im ersten Teil (Zeile 1 - 24) nichts anderes, als die Top 5 Kommentatoren der letzten 30 Tage aus der Datenbank zu holen. Im zweiten Teil (Zeile 26 - 40) wiederum wird dann die Ausgabe zusammengesetzt. Dabei wird je Top-Kommentator ein Listenelement <li> erzeugt, dessen Inhalt ein Link ist und dem in Klammern die Anzahl der Kommentare folgt. Der Link verweist auf die Website des jeweiligen Kommentators und der Link-Titel und der Link-Text werden mit dem Namen des Kommentators gefüllt.
In diesem Beispiel ist der Link ein "follow"-Link, aber ihr könnt den Code natürlich anpassen und den Link einfach auf "nofollow" setzen (rel="nofollow").
Kurze Erklärung der SQL-Anweisung im Detail
SELECT (Zeile 6 - 9)
Selektiert werden die Anzahl der Kommentare, die Namen und die Website-URLs der Kommentatoren.
FROM (Zeile 10 - 11)
Wie nicht anders zu erwarten war, beziehen wir uns auf die comments-Tabelle von WordPress.
WHERE (Zeile 12 - 17)
Zu den Bedingungen zählen folgende Punkte:
- die E-Mail-Adresse ist nicht leer
- der Kommentar wurde nicht von dem (Admin)-User mit der ID 1 geschrieben (ID ist ggf. anzupassen)
- der Kommentar ist kein Trackback oder Pingback
- der Kommentar wurde freigegeben
- der Kommentar ist innerhalb der letzten 30 Tage geschrieben worden
GROUP BY & ORDER BY & LIMIT (Zeile 18 - 23)
Gruppiert wird nach den E-Mail-Adressen der Kommentatoren, um so mittels COUNT() die richtige Anzahl der Kommentare zu ermitteln. Geordnet werden die selektierten Datenätze erst absteigend nach der Anzahl der Kommentare und anschließend aufsteigend nach den Namen. Als letztes wird nur noch festgelegt, dass ingesamt 5 Datensätze selektiert werden.
Code zum Anzeigen der Top-Kommentatoren
Der folgende Code kann an beliebige Stelle in eurem WordPress-Theme platziert werden. Möchte man also z.B. die Liste der Top 3 Kommentatoren der letzten 15 Tage in der Sidebar anzeigen, kann man den folgenden Code z.B. in die sidebar.php einfügen.
echo get_top_commentators(15, 3);Fazit
Die Top-Kommentatoren anzuzeigen ist, wie ich finde eine nützliche Sache, um mehr Kommentare in seinem Blog zu erhalten. Jedoch sollte man selbst entscheiden, ob es ratsam ist "follow"-Links zu nutzen oder nicht (Stichwort Spam).
Des Weiteren kann man auch die Zeitspanne variieren und nicht wie im Beispiel die Top-Kommentatoren der letzten 30 Tage anzeigen, sondern als Referenz nur die letzten 7 Tage nehmen, damit auch neue Besucher eures Blog eine gute Chance haben in der Liste zu erscheinen.
- 4. April 2012
ursprüngliche Veröffentlichung in meinem ehemaligen Blog "Smart-Webentwicklung"