WordPress 2.7: Kommentare und Pingbacks separat anzeigen

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.

 
Tweet This
0 Votes 1 Star
Ähnliche Beiträge

7 Trackbacks

  1. 08.11.2008 - WordPress 2.7: Anzeige der Kommentaranzahl beeinflussen - I am Jeriko
  2. 08.11.2008 - WordPress 2.7 Beta 2 angetestet | Dackworld
  3. 08.11.2008 - Anpassung des Themes an WP 2.7 - die Kommentare
  4. 28.11.2008 - Der Kampf mit wp_list_comments() - code, Kommentare, Theme, Tutorial, Wordpress, [...]
  5. 12.12.2008 - Empfehlungen vom 12. December 2008 | Biggle's Blog
  6. 25.12.2008 - Wordpress 2.7: Kommentare formatieren - eckig
  7. 31.01.2009 - Kommentare und Pingbacks getrennt anzeigen - rattlab.net

Diskussion: 11 Kommentare

  1. Monika (Website)

    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 …

    09. November 2008 um 00:45 Uhr - AntwortenReply to this comment
  2. Jeriko (Website)

    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.

    09. November 2008 um 01:37 Uhr - AntwortenReply to this comment
  3. Blogberry (Website)

    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

    13. November 2008 um 21:06 Uhr - AntwortenReply to this comment
  4. Monika (Website)

    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,

    13. November 2008 um 21:46 Uhr - AntwortenReply to this comment
  5. daburna (Website)

    Irgendwie funktioniert das bei mir überhaupt nicht. Dein Code ist auch irgendwie fehelrhaft. Beispiel ist ja wohl ziemlicher Quatsch!

    12. Dezember 2008 um 16:52 Uhr - AntwortenReply to this comment
  6. Jeriko (Website)

    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.

    12. Dezember 2008 um 17:07 Uhr - AntwortenReply to this comment
  7. Jeriko (Website)

    Scheisse, ich hab aus Versehen dein Kommentar gelöscht, kannst du es nochmal posten?

    12. Dezember 2008 um 17:30 Uhr - AntwortenReply to this comment
  8. daburna (Website)

    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.

    12. Dezember 2008 um 17:39 Uhr - AntwortenReply to this comment
  9. webverdiener.de (Website)

    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

    31. März 2009 um 18:40 Uhr - AntwortenReply to this comment
  10. Tim (Website)

    Der PHP Code in diesem Beitrag wird leider nicht richtig angezeigt.

    25. August 2009 um 15:29 Uhr - AntwortenReply to this comment
  11. Kai (Website)

    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 :-)

    07. März 2010 um 06:37 Uhr - AntwortenReply to this comment

Kommentar schreiben

SEOs brauchen es erst gar nicht probieren, werbliche Kommentare (Links zu Shops, Firmen, o.ä.) werden ebenfalls als Spam markiert. Wenn ihr etwas völlig anderes beisteuern wollt, dann bitte über den normalen Kontakt.

oder

neuerer beitrag (h) | älterer beitrag (l)
blogoscoop