Aus aktuellem Anlass (Ich habe es nämlich vor ein paar Tagen für ein Theme gemacht) möchte ich euch eine kleine Zusammenfassung zum oben genannten Thema geben. Für mehr Infos bzw. Details möchte ich euch die beiden Links ans Herz legen, die ich ganz ans Ende des Artikels gepackt habe 😉 .
In den “Einstellungen” respektive “Diskussion” gibt es seit WordPress 2.7 weitere Möglichkeiten, Kommentare anzuzeigen:
Für Theme-Bastler sind vor allem die Punkte “Strukturierte (verschachtelte) Diskussionen bis zur x. Ebene zulassen” bzw. “Kommentare auf Seiten mit maximal x Kommentaren aufteilen und die jeweils … Seite anzeigen” interessant.
Damit der User diese Einstellungen auch sehen kann, muss das Theme die neuen Kommentar-Funktionen enthalten:
- have_comments()
- wp_list_comments()
- paginate_comments_links($args) oder für mehr Details
previous_comments_link() bzw. next_comments_link() - comment_id_fields()
- comment_form_title( ‘Leave a Reply’, ‘Leave a Reply to %s’ )
- cancel_comment_reply_link()
In der Vergangenheit war es üblich, die Kommentare zum Teil mehr oder weniger “hardcoded” abzufragen bzw. auszugeben. Seit WP2.7 dienen nun die bereits zitierten Funktionen dazu, die Prozedur etwas zu vereinfachen. Nachfolgend ein Beispiel, wie dieser Block nun aussehen kann:
if ( have_comments() ) : ?>
<h4 id="comments"><?php comments_number('No Comments', 'One Comment', '% Comments' );?></h4>
<ul class="commentlist">
<?php wp_list_comments(); ?></ul>
<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.
else : // comments are closed
endif;
endif;
Für die Anzeige bzw. die Beantwortung eines der verschachtelten Kommentare ist es notwendig, um den Block, der für die Ausgabe des Kommentarformulars zuständig ist, ein DIV mit der id="respond"
zu bauen. Dies dient dazu, dass das JavaScript, das im Hintergrund läuft, das Kommentarformular genau an die Stelle des zu beantwortendenen Kommentars rückt. Möchte man doch nicht kommentieren, kommt die Funktion “cancel_comment_reply_link()” zum Tragen. Dazu einfach nachfolgenden Block innerhalb des Respond-DIVs unterhalb des Kommentarformulars einfügen:
<div id="cancel-comment-reply">
<small><?php cancel_comment_reply_link() ?></small></div>
Um den Code genauer kennenzulenren, empfehle ich, sich bei texto.de das Blanko-Theme herunterzuladen und dort den Inhalt der comments.php zu studieren – sehr hilfreich, denn Monika hält ihr Theme wirklich auf dem neuesten Stand (auch wenn es auf den ersten Blick nicht so aussieht).
Das Ergebnis kann dann in etwa folgendermaßen aussehen:
Man sieht deutlich, dass die Antworten standardmäßig eingerückt werden, um die Hierarchie der Kommentare anzuzeigen (Ich habe noch sehr wenig CSS eingebaut, deswegen sind die Unterschiede deutlich zu sehen).
Klickt man auf einen der “Antworten”-Links, rückt das Kommentarfeld mitten in den Code hinein:
Weiterführende Links:
Migrating Plugins and Themes to 2.7 / Enhanced Comment Display
WordPress 2.7 Comments Enhancements
Oh schön, das merk ich mir gleich. Möchte mein Theme demnächst auch noch ein wenig verfeinern