Kommentare und Pingbacks trennen

Wenn in einem Blog das Verhältnis von Pingbacks/Trackbacks und Kommentaren ungefähr gleich ist, stören die eingestreuten Ping-/Trackbacks meiner Meinung nach beim Lesen der Kommentare.

Vladimir Simovic hat in einem älteren Artikel beschrieben, wie man das mithilfe eines Plugins getrennt ausgeben kann. Das Plugin gibt es wohl nicht mehr, deshalb habe ich ausgehend von Vladimirs Artikel das mal für mich in Szene gesetzt.

Meine Methode ist einfach und sicher etwas grobschlächtig, aber sie funktioniert einwandfrei.

Ursprüngliche comments.php Classic-Theme Ausschnitt:

  • <ol id="commentlist">
  • <?php foreach ($comments as $comment) : ?>
  • --------------------
  • --------------------
  • <?php endforeach; ?>
  • </ol>

Das ist der entscheidende Ausschnitt meiner comments.php. Die für die Änderung unwichtigen Codezeilen habe ich einfach durch zwei Zeilen Bindestriche ersetzt.

Nach der Änderung sah der entscheidende Abschnitt meiner comments.php dann so aus:

  • <!-- Kommentare Anfang -->
  • <ol id="commentlist">
  • <?php foreach ($comments as $comment) : if (get_comment_type() == "comment") : ?>
  • --------------------
  • --------------------
  • <?php endif; endforeach; ?>
  • <!-- Kommentare Ende -->
  •  
  • <!-- Pingbacks/Trackbacks Anfang -->
  • <?php foreach ($comments as $comment) : if (get_comment_type() != "comment") : ?>
  • --------------------
  • --------------------
  • <?php endif; endforeach; ?>
  • </ol>
  • <!-- Pingbacks/Trackbacks Ende -->

Die foreach-Zeile habe ich durch eine if-Abfrage ergänzt und diese unmittelbar vor endforeach mit endif beendet.

Diesen kompletten Codeabschnitt habe ich kopiert und direkt unterhalb davon wieder eingefügt.

Anschließend habe von den doppelten Gleichheitszeichen (==) der foreach-Zeile eines durch ein Ausrufezeichen ersetzt (!=). Damit wird aus gleich dann ungleich.

An dieser Stelle wird dann alles ausgegeben was kein Kommentar ist, also die Pingbacks und Trackbacks.

Ihr könnt die Reihenfolge natürlich austauschen, sodass zuerst Ping-/Trackbacks ausgegeben werden.

Weil einige von euch vielleicht die comments-php des Kubrick-Themes nutzen, habe ich die notwendigen Änderungen dafür anschließend dokumentiert.

Ursprüngliche comments.php Kubrick-Theme Ausschnitt:

  • <ol class="commentlist">
  • <?php wp_list_comments();?>
  • </ol>

Geänderte comments.php Kubrick-Theme Ausschnitt:

  • <ul class="commentlist">
  • <?php wp_list_comments('type=comment'); ?>
  • </ul>
  • <ul class="commentlist">
  • <?php wp_list_comments('type=pings'); ?>
  • </ul>

Das ist fast schon selbsterklärend. pings heißt übrigens Pingbacks und Pingbacks zusammen!

Wenn die Ping-/Trackbacks überhaupt nicht angezeigt werden sollen, dann lasst den entsprechenden Codeabschnitt einfach weg. Allerdings habt ihr dann das Problem das Ping-/Trackbacks trotzdem mitgezählt werden.

Ihr könnt euch damit behelfen indem ihr in eurer comments.php die Zeile mit <h3 id="comments">------</h3> sucht. Im classic-Theme ist das ca. Zeile 5 und im Kubrick-Theme ca. Zeile 21.

Löscht den Inhalt des h3-Tags und ersetzt ihn z.B. durch das Wort Kommentare. Das sieht dann allerdings nicht so toll aus, wenn keine Kommentare vorhanden sind.

Oder ihr löscht die ganze h3-Zeile raus. Die Kommentare sind ja i.d.R. schon optisch hervorgehoben dargestellt.

Sollte jemand von euch erklären können, wie nur die Kommentare gezählt werden können, wenn Track-/Pingbacks nicht mit ausgegeben werden, nur heraus damit!

Kategorie: Wordpress
Schlagworte: , , , .

Nach oben

3 Antworten auf Kommentare und Pingbacks trennen

  1. Hi Klaus,

    zählen kannst du die Kommentare z.B. mit
    $num_comments = count($comments_by_type['comment']);

  2. Klaus sagt am

    Tach David,

    vielen Dank für deine Hilfe! :)

    In den nächsten Tagen werde ich den Artikel diesbezüglich noch ergänzen.

    edit. Habe es leider nicht eingebaut bekommen.

  3. Funktioniert der Codeschnipsel nicht?

Sprich und fürchte dich nicht!

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Bitte maskiert < mit &lt; und > mit &gt; sonst verschwinden sie im Nirgendwo!