Diese Anleitung bezieht sich ausschließlich auf WordPress 2.7 und die darin enthaltenen neuen erweiterten Kommentarfunktionen. Wie man die Kommentare in seinem eigenen Theme für WordPress 2.7 bereit macht kann man hier und hier (auf deutsch) nachlesen.
WordPress hat seit ewigen Zeiten die Unsitte, Kommentare sowie Ping-/Trackbacks zusammen zu zählen, obwohl letztere keine wirklichen Kommentare sind. Hat man zum Beispiel wie hier beschrieben die Ausgabe nach Kommentaren und Ping-/Trackbacks getrennt, so ist die Anzahl auch schlicht falsch. Dies lässt sich jedoch leicht beheben.
Um per default nur noch die Kommentare zu zählen fügt man folgendes in der functions.php im Theme-Ordner ein. Ist diese Datei noch nicht vorhanden kann man sie einfach neu erstellen. Gibt es die Datei schon, so lässt man <?php und ?> aus dem folgenden Codeschnipsel weg und fügt ihn direkt vor dem letzten ?> ein:
< ?php
function ping_count( $count ) {
global $id;
$comments_by_type = &separate_comments(get_comments('post_id=' . $id));
return count($comments_by_type['pings']);
}
function comment_count( $count ) {
global $id;
$comments_by_type = &separate_comments(get_comments('post_id=' . $id));
return count($comments_by_type['comment']);
}
add_filter('get_comments_number', 'comment_count', 0);
?>
Zuerst einmal werden zwei neue Funktionen namens ping_count und comment_count erstellt, die jede für sich die Kommentare bzw. Ping-/Trackbacks zum jeweiligen Beitrag zählen. Zusätzlich wird noch ein Filter auf die WordPress-Funktion get_comments_number angewendet, damit diese fortan die Funktion comment_count nutzt – und damit Ping-/Trackbacks nicht mehr mitzählt. Im Standard-Theme muss jetzt nicht mehr verändert werden, hat man sich eine separate Anzeige der Ping-/Trackbacks gebastelt, kann man beispielsweise in der zugehörigen Überschrift die Anzahl mit
< ?php echo ping_count(); ?>
ausgeben lassen.
Sicher, dass das nicht
function ping_count( $count ) {global $id;
$comments_by_type = &separate_comments(get_comments('post_id=' . $id));
return count($comments_by_type['pings']);
}
heißt? Und welchen Sinn hat der Parameter $count?
Argh, natürlich muss es das! Danke für den Hinweis, habs geändert.
Gibt es auch die Möglichkeit, die Anzahl der Pings auszugeben?
Immerhin werden die ja auch in der functions.php gezählt. Mit comments_number funktioniert es erwartungsgemäß leider nicht.
geht doch:
echo ping_count();
MerkW7uuml;rdig wenn ich deinen Code verwende kriege nur noch eine weisse Seite wenn ich ein Artikel speicher/veroeffentliche, was hochlade oder nen Kommentar abschicken.
Mit diesen Code hier hab ich keine Probleme mit kann aber keine TrackBacks ausgeben.
Wüsstest du vieleicht woran das liegt das ich eine weisse Seite bei deinen Code kriege?
Mh merkwürdig hat sich das Problem von alleine auf einmal gelöst.