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 2.7 kommt mit einer neuen Funktion wp_list_comments die sich um die Ausgabe der Kommentare kümmert, und die ohne Änderungen alle Kommentare in - falls gewünscht - verschachtelter sowie chronologischer Reihenfolge ausgibt, ohne dabei Rücksicht darauf zu nehmen, ob es sich um ein normales Kommentar oder um einen Pingback bzw. Trackback handelt. Das lässt sich jedoch recht einfach realisieren. Die folgenden Änderungen werden am Default-Theme gezeigt, lassen sich aber auf jedes beliebige Theme anwenden.
Zuerst ein Blick auf die normale Kommentarschleife:
<?php if ( have_comments() ) : ?>
<h3 id="comments"><?php comments_number('No Responses', 'One Response', '% Responses' );?> to “<?php the_title(); ?>”</h3>
<ol class="commentlist">
<?php wp_list_comments(); ?>
</ol>
<div class="navigation">
<div class="alignleft"><?php previous_comments_link() ?></div>
<div class="alignright"><?php next_comments_link() ?></div>
</div>
<?php else : // this is displayed if there are no comments so far ?>
<?php if ('open' == $post->comment_status) : ?>
<!-- If comments are open, but there are no comments. -->
<?php else : // comments are closed ?>
<!-- If comments are closed. -->
<p class="nocomments">Comments are closed.</p>
<?php endif; ?>
<?php endif; ?>
Zuerst einmal müssen wir eine Kleinigkeit in der single.php ändern, diese Datei also öffnen und nach folgendem Codeschnipsel suchen:
comments_template();
und ändern in:
comments_template('',true);
Dadurch kriegen wir ein global verfügbares Array namens $comment_by_type, dass wir später nutzen können. Wen es interessiert, der leere Parameter ist für die zu ladende Datei, per default also comments.php. Die Änderungen in der single.php sind damit abgeschlossen, die Datei kann geschlossen werden.
In der comments.php sucht man nach folgender Zeile:
<?php if ( have_comments() ) : ?>
und fügt direkt darunter folgendes ein:
%lt;?php if ( !empty($comments_by_type['comment']) ) : ?>
Dann ändert man noch
<?php wp_list_comments(); ?>
in
<?php wp_list_comments('type=comment'); ?>
ab und fügt hinter
</ol>
ein
<?php endif; ?>
ein. Dadurch haben wir erstens die Ausgabe auf reine Kommentare beschränkt, Ping- und Trackbacks werden für den Moment nicht angezeigt. Zusätzlich sorgt die if-Abfrage dafür, dass die Überschrift und die Liste nur dann angezeigt werden, wenn auch wirklich Kommentare vorliegen.
Um die Ping- und Trackbacks anzuzeigen fügen wir folgenden Codeschnipsel direkt unter dem gerade eingefügten endif; ein:
<?php if ( !empty($comments_by_type['pings']) ) : ?>
<h3 id="pings">Trackbacks/Pingbacks</h3>
<ol class="commentlist">
<?php wp_list_comments('type=pings'); ?>
</ol>
<?php endif; ?>
Über die if-Abfrage wird wieder abgefragt, ob Kommentare vom Typ Ping-/Trackback vorliegen. Falls das der Fall ist wird eine Überschrift und eine Liste mit den entsprechenden Kommentaren generiert und angezeigt. Die komplette, neue Kommentarschleife sieht also wie folgt aus:
<?php if ( have_comments() ) : ?>
<?php if ( !empty($comments_by_type['comment']) ) : ?>
<h3 id="comments"><?php comments_number('No Responses', 'One Response', '% Responses' );?> to “< ?php the_title(); ?>”</h3>
<ol class="commentlist">
<?php wp_list_comments('type=comment'); ?>
</ol>
<?php endif; ?>
<?php if ( ! empty($comments_by_type['pings']) ) : ?>
<h3 id="pings">Trackbacks/Pingbacks</h3>
<ol class="pinglist">
<?php wp_list_comments('type=pings'); ?>
</ol>
<?php endif; ?>
<div class="navigation">
<div class="alignleft"><?php previous_comments_link() ?></div>
<div class="alignright"><?php next_comments_link() ?></div>
</div>
<?php else : // this is displayed if there are no comments so far ?>
<?php if ('open' == $post->comment_status) : ?>
<!-- If comments are open, but there are no comments. -->
<?php else : // comments are closed ?>
<!-- If comments are closed. -->
<p class="nocomments">Comments are closed.</p>
<?php endif; ?>
<?php endif; ?>
Und das war es auch schon. Für den Moment werden sämtliche Kommentare gleich angezeigt, wie diese sich auch in der zugrunde liegenden Struktur ändern lassen wird in einem Folgeartikel erklärt.













Hi ich habe es bei meiner Beta Installation noch immer nicht geschafft als Gast kommentieren zu können, daher bin ich jetzt einfach ganz frech und probier dies hier bei Dir, da ja auch eine Beta hier läuft.
Unabhängig davon finde ich deine 3 Kommentar Artikel wirklich gut …
Tu dir keinen Zwang an :-)
Ich hab in deinem HowTo, wie man die die comments.php für WordPress 2.7 fit macht noch ein paar Anmerkungen geschrieben, vielleicht hängt dein Problem ja damit zusammen.
Gibt es in WP 2.7 (endlich) die Möglichkeit, Trackbacks und Pingbacks voneinander zu trennen? Ich bin momentan händeringend auf der Suche nach einem WP-Plugin, dass Track- und PIngbacks NICHT in den Kommentaren anzeigen lässt.
Sollte das ab WP 2.7 mit OnBoard-Mitteln möglich sein, stelle ich meine Suche ein.
Schöne Grüße,
Sascha
Hi Blogberry die Möglichkeit gibts schon irr lange – ganz ohne Plugins mit minimalem Eingriff,
ich glaub sogar Jeriko hat hier auch einen Artikel drüber,
Irgendwie funktioniert das bei mir überhaupt nicht. Dein Code ist auch irgendwie fehelrhaft. Beispiel
ist ja wohl ziemlicher Quatsch!Das das Default-Theme nicht besonders schön oder gefragt ist mag sein, Quatsch ist deswegen aber noch nicht. Und stimmt, ein paar Fehler haben sich in den Code geschlichen, kann ja mal passieren.
Scheisse, ich hab aus Versehen dein Kommentar gelöscht, kannst du es nochmal posten?
Ich hab nur geschrieben, dass ich mich nicht auf den Default-Theme bezogen hab und dass es nicht böse gemeint war. Es funktionierte halt nicht. So und wenn man ein Theme ohne single.php hat, kann man die Änderungen auch in der index.php machen. Dann funktioniert das trotzdem.
Hallo,
wie kriegt man es hin, wie es zum Beispiel jetzt bei dir ist (siehe Trackbacks).
Ich möchte dies genau so machen, keinen Inhalt, einfach nur den Link und alles schön nummeriert.
Habe im Web leider nichts gefunden, womit man dies erreich kann.
Liebe Grüße
Igor
Der PHP Code in diesem Beitrag wird leider nicht richtig angezeigt.
Hallo Jeriko,
Wie mein Vorredner Tim schon schrieb wird der Code nach wie vor nicht richtig angezeigt.
Wäre super (und sicherlich auch in Deinem Interesse), wenn das korrigiert werden würde.
Schönen Sonntag :-)