Kommentare formatieren in WordPress 2.7
Die Formatierung der Kommentare – ein beliebter Sport unter Theme-Designern. Wer Kommentare in WordPress 2.7 anpassen möchte, findet in der comments.php jedoch lediglich den Aufruf der Funktion wp_list_comments. Was aber, wenn ich einen völlig anderen Aufbau benötige?
Aufruf der Kommentare:
Wer einmal in die comments.php eines Themes für WordPress 2.7 schaut, findet nicht mehr das gesamte Gerüst eines Kommentars, um dieses nach Belieben anzupassen. Die Liste aller Kommentare wird nur noch mit einer einzigen Funktion aufgerufen.
<div class='commentlist'>
<?php wp_list_comments(); ?>
</div>
Bemerkung:
Über das Stylesheet können wir natürlich mit CSS einen Großteil der Formatierung übernehmen und bekommen dafür auch zahlreiche Klassen an die Hand. Wenn wir jedoch z. B. ein div hinzufügen oder verändern möchten, wird es schon schwierig.
Eigenes Kommentar-Template aufrufen:
Um hier absolute Kontrolle zu bekommen, können wir beim Aufruf dieser Liste ebenfalls angeben, dass ein individuelles Kommentar-Template verwendet werden soll.
<ul class='commentlist'>
<?php wp_list_comments('callback=mytheme_comment'); ?>
</ul>
Bemerkung:
WordPress prüft nun, ob in der functions.php eine Funktion mit dem Namen ‘mytheme_comment’ vorhanden ist.
Eigenes Kommentar-Template verfassen:
In der functions.php können wir nun diese Callback-Funktion erstellen und den Aufbau der Kommentarliste nach Belieben anpassen.
function mytheme_comment($comment, $args, $depth) {
$GLOBALS['comment'] = $comment; ?>
<li <?php comment_class(); ?> id='li-comment-<?php comment_ID() ?>'>
<div id='comment-<?php comment_ID(); ?>'>
<div class='comment-author vcard'>
<?php echo get_avatar($comment,$size='48',$default='<path_to_url>' ); ?>
<?php printf(__('<cite class='fn'>%s</cite> <span class='says'>says:</span>'), get_comment_author_link()) ?>
</div>
<?php if ($comment->comment_approved == '0') : ?>
<em><?php _e('Your comment is awaiting moderation.') ?></em>
<br />
<?php endif; ?>
<div class='comment-meta commentmetadata'><a href='<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID ) ) ?>'><?php printf(__('%1$s at %2$s'), get_comment_date(), get_comment_time()) ?></a><?php edit_comment_link(__('(Edit)'),' ','') ?></div>
<?php comment_text() ?>
<div class='reply'>
<?php comment_reply_link(array_merge( $args, array('depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
</div>
</div>
<?php
}
Fazit:
Wir behalten also auch in WordPress 2.7 die volle Kontrolle über die Ausgabe der Kommentare. Da wird es in Zukunft, wie auch bisher, sicherlich viel Interessantes und Kreatives zu sehen geben.


6 Kommentare
Daniel - 27. Januar 2009
Juhuuu. Schönes Ding! Hab mich schon gefragt, wie das wohl geht. Eine Möglichkeit musste es ja geben. Danke!
webdemar - 27. Januar 2009
Das freut mich Daniel!
Tommy - 24. Februar 2009
Es sollte ja eigentlich auch mit einem eigenem Custom-Query gehn… dann muss man das nicht in die functions.php packen.. oder täusche ich mich da?
Simon [webdemar] - 25. Februar 2009
@Tommy:
Mit Custom-Querys bestimmt man den Aufruf der Posts (Anzahl, Kategorie, Reihenfolge bspw.). Das Aussehen von Kommentaren kann man damit nicht beeinflussen. Die Anpassung der Kommentare unter WP2.7 müssen wir mit der Callback-Funktion in der functions.php machen.
hombertho - 3. August 2009
Sehr schön, genau das hat mir gefehlt, damit ich wieder die volle Kontrolle über meine Kommentare habe. Vielen Dank für den Tipp.
Viele Grüße
Thomas
Silvio - 4. März 2010
Hi Simon,
ich hätte auf meinem Blog gerne so eine ähnliche Kommentardarstellung wie hier auf webdemar. Ich nehme an, die Darstellung kam zusammen mit dem Theme. Lässt dich das dennoch realisieren bzw. kannst du mir den Codeschnipsel zukommen lassen, sodass ich da rumbasteln kann?!?
Danke & Gruß
1 Trackback