Normalerweise werden in WordPress Kommentare von Lesern und Trackbacks/Pingbacks, also Verweise auf den eigenen Artikel von anderen Websites, in einer gemeinsamen Liste dargestellt. Häufig ist es aber sinnvoll und gewünscht, dass Kommentare und Trackbacks voneinander getrennt dargestellt werden. Wie das funktioniert, zeigt dieser Beitrag. Es ist der erste von drei Artikeln, die sich mit dem Thema Kommentare befassen.
In der WordPress Version 2.7 wurde ein komplett überarbeitetes Kommentarsystem eingeführt. Unter anderem kann man seit dem direkte Antworten auf Kommentare verfassen (verschachtelte Kommentare), die Anzahl der auf einer Seite angezeigten kommentare und die Reihenfolge (ältester, oder neuster zuerst) festlegen. Die nachfolgend gezeigte Technik funktioniert also auch nur mit WordPress 2.7 oder höher.
Der Kommentar-Loop
Hier ein Beispiel des Sogenannten Kommentar-Loops, auf das ich mich in diesem Beitreag beziehen werde:
<?php if ( have_comments() ) : ?>
<h3 id="comments"><?php comments_number(‘No Responses’, ‘One Response’, ‘% Responses’ );?> to %u201C<?php the_title(); ?>%u201D</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.
<?php endif; ?>
<?php endif; ?>
Kommentarcode anpassen
Beginnen wir damit den Code so zu modifizieren, dass echte Kommentare und Trackbacks getrennt dargestellt werden. Suchen Sie folgenden Code in der “comments.php”.
Direkt darunter fügen Sie ein:
Anschließend finden Sie diesen Code:
und ersetzen ihn mit dem folgenden:
Suchen Sie nach dem Abschlusstag für die Auflistung der Kommentare
und ergänzen Sie direkt anschließend:
Indem Sie den “endif” Befehl hinzufügen, wird verhindert, dass etwas ausgegeben wird, wenn gar nichts vorhanden ist.
Trackbacks/Pingbacks einrichten
Nun fügen Sie folgenden Code, der die Trackbacks anzeigen wird, unterhalb der Kommentare (oder wo auch immer Sie ihn haben wollen) ein.
<h3 id="pings">Trackbacks/Pingbacks</h3>
<ol class="commentlist">
<?php wp_list_comments(‘type=pings’); ?>
</ol>
<?php endif; ?>
Dadurch werden die Trackbacks zwar angezeigt, aber bisher werden sie genauso formatiert wie normale Kommentare. Das kann Platzverschwendung sein und deshalb passen wir hier noch etwas an.
Öffenen Sie die “functions.php” und platzieren Sie die folgende Funktion:
function list_pings($comment, $args, $depth) {
$GLOBALS[‘comment’] = $comment;
?>
<li id="comment-<?php comment_ID(); ?>"><?php comment_author_link(); ?>
<?php } ?>
Diese Funktion ermöglicht es, die Trackbacks als einfache Liste darzustellen, anstatt wie normale Kommentare. Eine Sache muss aber noch getan werden.
Öffnen Sie die “comments.php” und finden Sie den Code:
<?php wp_list_comments(‘type=pings’); ?>
und ersetzen ihn durch:
<?php wp_list_comments(‘type=pings&callback=list_pings’); ?>
Nun sollte der neue Kommentar-Loop so aussehen:
<?php if ( ! empty($comments_by_type[‘comment’]) ) : ?>
<h3 id="comments"><?php comments_number(‘No Responses’, ‘One Response’, ‘% Responses’ );?> to %u201C<?php the_title(); ?>%u201D</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&callback=list_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.
<?php endif; ?>
<?php endif; ?>
Das war´s. Ab sofort werden Ihre Kommentare und Ihre Trackbacks/Pings voneinander getrennt dargestellt. Das schafft Ordnung und Übersicht. Aber Moment. Wäre es dann nicht auch sinnvoll, wenn die Anzeige für die Anzahl der Kommentare auch wirklich nur die Kommentare und nicht zusätzlich die Trackbacks berücksichtigt?! Wie Sie das erreichen, zeige ich Ihnen im folgenden Artikel…
2 Kommentare zu “Wie man in WordPress Kommentare und Trackbacks getrennt darstellt”
Kommentare wurden abgeschaltet.