WordPress: Anzahl der Kommentare und Trackbacks getrennt darstellen

comments-trackbacks

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.

Web Design mit Sass

Eine Einführung in moderne Stylesheets.

In unserem Shop kaufen
ePub, Mobi + PDF

Bei Amazon kaufen
Kindle-Version

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!