WordPress: Anzahl der Kommentare und Trackbacks getrennt darstellen
In WordPress ist es mit Bordmitteln, etwa einem Template Tag, leider nicht möglich die Anzahl der Kommentare und die der Trackbacks getrennt von einander darzustellen. In der Datenbank unterscheidet WordPress hingegen beide Typen, und markiert echte Kommentare in einem zusätzlichen Feld. Mit einer entsprechenden Funktion kann geprüft werden ob das Feld ausgefüllt ist, wodurch sich beide Arten von Kommentaren einzeln anzeigen lassen.
Anzahl an Kommentaren darstellen
Der folgende Code gehört üblicherweise in die functions.php
. Er kann jedoch auch im gleichen Template eingesetzt werden.
Die Funktion prüft ob Kommentare vorhanden sind und gibt (sofern das Ergebnis nicht Null ist) die Anzahl aus.
function comment_count() { global $post;
$thePostID = $post->ID; global $wpdb;
$count = "SELECT COUNT(*) FROM $wpdb->comments WHERE comment_type = ' '
AND comment_post_ID = $thePostID"; $co_number = $wpdb->get_var($count);
if ($co_number == 0) {} else {echo $co_number;}
}
Mit folgenden Snippet wird die Anzahl der Kommentare an einer beliebigen Stelle des Themens dargestellt.
<?php comment_count(); ?>
Anzahl der Trackbacks darstellen
Der Code für die Darstellung der Trackbacks funktioniert auf die gleiche Art und Weise. Folgendes Snippet gehört in die functions.php
.
function trackback_count()
{ global $post;
$thePostID = $post->ID;
global $wpdb;
$count = "SELECT COUNT(*) FROM $wpdb->comments
WHERE comment_type != ' '
AND comment_post_ID = $thePostID"; $tb_number = $wpdb->get_var($count);
if ($tb_number == 0) {} else {echo $tb_number;} }
Mit diesem Snippet wird die Anzahl der Trackbacks ausgegeben.
<?php trackback_count(); ?>
Credits
Dieses Snippet habe ich auf denkvirtuose.de gefunden und unverändert übernommen. Es funktioniert einwandfrei und ist auch auf diesem Blog im Einsatz. Vielen Dank dafür!
Ich habe bei:
http://koffeinbetriebenes.net/wordpress-anzahl-der-kommentare-je-artikel-ausgeben/488
gelesen, dass diese Variante sehr viele Datenbank abfragen tätigt. Deshalb wird eine andere Variante empfohlen.
Und zwar folgenden Code in die comments.php :
comment_count;
if($kommentare > 1) echo $kommentare.“ Kommentare“;
elseif ($kommentare == 1) echo $kommentare.“ Kommentar“;
else echo „keine Kommentare“;
?>
Es funktioniert ohne Probleme, aber meine Frage ist ob er da wirklich recht hat und es mit dem php-code besser ist
Gibt es das auch für die Trackbacks?
Also mit der hier vorgestellten Variante wird auf einer Übersichtsseite für jeden Beitrag eine Abfrage für Kommentare und eine für die Trackbackanzahl gemacht.
Also bei 10 Artikeln bspw. 20 Abfragen für Trackbacks und Kommentare.
Bei deinem Codebeispiel werden im Übrigen die Trackbacks gar nicht gesondert ausgelesen?!
Vielen Dank für den Tipp, nur eine kleine Anmerkung:
Bei dieser Variante werden auch Kommentare gezählt, die als Spam eingestuft sind. Mit folgender SQL Query werden nur die genehmigten gezählt:
$count = "SELECT COUNT(*) FROM $wpdb->comments WHERE comment_type = ' '
AND comment_post_ID = $thePostID AND comment_approved='1'";
Vielen Dank für die Ergänzung.