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

WordPress: Anzahl der Kommentare anzeigen (ohne Plugin)

8. November 2012
Stephan
Kommentaranzahl in WordPress anzeigenaa

Vor kurzem hatte ich euch bereits gezeigt, wie ihr die Artikelanzahl in WordPress anzeigen könnt. Ähnlich der Artikelanzahl lässt sich auch die Kommentaranzahl auf einfache Weise ermitteln.

Der vorgestellte Code kann zum einen die Gesamtanzahl der abgegebenen Kommentare anzeigen. Zum anderen kann aber auch die Anzahl der Kommentare der letzten X Tage ermittelt und ausgegeben werden.

Der Code zum Ermitteln der Kommentaranzahl

Kopiert den folgenden Code einfach in eure functions.php eures Themes:

function get_comments_count($by_days = false, $days = 30) 
{
	global $wpdb;
	
	$day_condition = '';
	
	$day_condition = $by_days ? 'AND comment_date >= DATE_SUB(CURDATE(), INTERVAL ' . $days . ' DAY)' : '';

	$comment_count = $wpdb->get_col('
		SELECT 
			COUNT(comment_ID)
		FROM
			' . $wpdb->comments . ' c
		INNER JOIN
			' . $wpdb->posts . ' p ON (c.comment_post_id = p.ID)
		WHERE
			comment_approved = "1"
			AND c.comment_type NOT IN ("trackback", "pingback")
			AND c.user_id != "1"
			AND p.post_status = "publish"
			' . $day_condition . '			
	');
		
	return $comment_count[0];	
}

Der erste Teil der Funktion (5 – 7) dient zum Überprüfen, ob die Gesamtanzahl der Kommentare ermittelt oder nur Kommentare der letzten X Tage berücksichtigt werden sollen.

Im zweiten Teil befindet sich dann die entsprechende SQL-Abfrage (Zeile 9 – 22).

Kurze Erklärung der SQL-Anweisung

SELECT (Zeile 10 – 11)
Mittels COUNT() stellen wir die Anzahl der Kommentare fest. Die COUNT()-Funktion wird dabei auf die Kommentar-ID, die für jeden abgegebenen Kommentar eindeutig ist, angewendet.

FROM (Zeile 12 – 15)
Wir beziehen uns hier auf die comments-Tabelle von WordPress. Zusätzlich verbinden wir die Tabelle noch mit der posts-Tabelle mittels einem INNER JOIN. Die „Verbindung“ findet dabei über die Post-ID statt.

WHERE (Zeile 16 – 21)
Zu den Bedingungen zählen folgende Punkte:

  • bei dem Kommentar handelt es sich um einen genehmigten Kommentar
  • der Kommentar-Typ ist weder von Typ pingback noch Trackback
  • die ID des Autores eines Kommentars ist ungleich 1 – falls ihr also einen Admin-Account mit der User-ID 1 habt, werden diese Kommentare nicht mitgezählt
  • der zum Kommentar dazugehörige Artikel wurde bereits veröffentlicht bzw. hat den Status publish
  • Annahme: $by_days ist true – Datum der Veröffentlichung des jeweiligen Kommentars muss kleiner dem Datum sein, dass vor X (days) Tagen war

Der Code zum Anzeigen der Kommentaranzahl

Den folgenden Code könnt ihr wie immer an beliebige Stelle in eurem WordPress-Theme platzieren. Möchtet ihr beispielsweise die Anzahl aller bisher abgegebenen Kommentare in der Sidebar anzeigen, muss der Code in eure sidebar.php eingefügt werden:

echo get_comments_count();

Um nur die Kommentaranzahl der letzten 20 Tage anzuzeigen, genügt folgender Aufruf:

echo get_comments_count(true, 20);

Fazit

Der vorgestellte Code-Schnipsel ist eine von mehreren Möglichkeiten zur Anzeige eurer Kommentaranzahl.

Falls ihr nur die Gesamtanzahl eurer Kommentare benötigt, bräuchtet ihr im Grunde aber auch nur die von WordPress bereitgestellte wp_count_comments-Funktion verwenden.

Fällt euch ein, was man noch zählenswert wäre in WordPress?

Kommentare  
1 Kommentar vorhanden
1 Wolfgang schrieb am 16. November 2012 um 00:41 Uhr

Ich hatte eigentlich gedacht, dass der Counter in fast jedem Theme schon eingebaut wäre. Scheint aber doch nicht so zu sein.

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

Vielen Dank für dein Kommentar!