Kategorien
WordPress-Tipps

Comments.php mit functions.php kombinieren

Bislang verwende ich hier noch die alte Methode der Kommentar-Funktion. Jetzt wollte ich gerne mal die aktuelle (seit v2.7.) in einem Blog einsetzen.
Hier eine Anleitung zur Umstellung – keine leichte Aufgabe, soviel sei schon gesagt.

Die bisherige Methode:

In den Beiträgen (evtl. auch Seiten) wurde das Kommentar-Template aufgerufen <?php comments_template(); ?>

In dem Template comments.php werden dann folgende Bereiche verarbeitet:

  1. Anzeige der Kommentar-Anzahl
    <?php comments_number(...);?>
  2. Auflistung der Kommentare
    mit Angaben zu Author, Avatar, Datum, Text
    Beispiel Code
    Spoiler

    <ol class="commentlist">
    <?php foreach ($comments as $comment) : ?>
    <li <?php comment_class(); ?> id="comment-<?php comment_ID() ?>">
    <?php echo get_avatar( $comment, 32 ); ?>
    <?php comment_text() ?>
    <p><cite><?php comment_type(_x('Comment', 'noun'), __('Trackback'), __('Pingback')); ?> <?php _e('by'); ?> <?php comment_author_link() ?> &#8212; <?php comment_date() ?> @ <a href="#comment-<?php comment_ID() ?>"><?php comment_time() ?></a></cite> <?php edit_comment_link(__("Edit This"), ' |'); ?></p>
    </li>
    <?php endforeach; ?>
    </ol>

    [collapse]
  3. Regelungen was passiert wenn Kommentare geschlossen sind; User eingeloggt ist usw.
  4. Der Kommentar Eingabe-Bereich
    <form action="<?php echo... id="commentform">
Die neue Methode:

Der wesentliche Unterschied ist, dass der 2. Punkt – die Auflistung der Kommentare – jetzt nur noch aus einem kurzen Aufruf besteht.

<ol class="commentlist">
<?php wp_list_comments('type=comment&callback=mytheme_comment'); ?>
</ol>

Die bisherigen Angaben zum Author, Datum usw. stehen jetzt in der functions.php.

Anleitung zur Verwendung der neuen Kommentar-Funktion

zunächst die Basis. später mehr zu den weiteren Möglichkeiten (Trennung von Kommentaren und Trackbacks) – siehe auch [Teil 2].

  1. Den Aufruf des Kommentar-Templates in der single.php (evtl. auch page.php) ändern in:
    <?php comments_template('', true); ?>
  2. In der functions.php den Code dieser Datei eingeben:
    • functions Code
      Sollte noch keine vorhanden sein, die Datei downloaden und umbennen in functions.php

    Hinweis

    Spoiler

    Eine functions.php hat immer folgenden Aufbau

    <?php Die 1. Zeile

    Der Kommentar Code-Bereich (function mytheme…)

    ?> Die letzte Zeile. Danach darf keine Leerzeichen stehen.

    Beim reinkopieren nur den Bereich dazwischen verwenden.
    Mehr Infos über die functions.php im WP-Codex

    [collapse]
  3. In der comments.php den vorhandenen Code für die Auflistung der Kommentare entfernen und gegen den neuen Aufruf austauschen:

    <ol class="commentlist">
    <?php wp_list_comments('type=comment&callback=mytheme_comment'); ?>
    </ol>

    Dadurch wird geprüft ob in der functions.php ein Bereich mytheme_comment vorhanden ist.

Die Kommentare im Blog werden jetzt sicherlich etwas verändert aussehen. Um diese wieder in die alte Form zu kriegen muss der Code in der functions.php angepasst werden.
Und das kann schon ziemlich schwierig sein, wenn man zuvor die Kommentare aufwändig gestaltet hatte.

Kommentare vs. Trackbacks und Pings

Grundsätzlich lassen sich Kommentare von Trackbacks und Pings durch die Type-Angabe trennen.
Mit dem bisherigen Code in der comments.php werden nur die Kommentare angezeigt.

<?php wp_list_comments('type=comment&callback=mytheme_comment'); ?>

um sich zusätzlich die Trackbacks / Pings anzeigen zu lassen, bedarf es eines weiteren Codes zur Auflistung:
<?php wp_list_comments('type=pings&callback=list_pings'); ?>
Die Angabe type=pings fasst Trackback und Ping-Einträge zusammen.

Bei Pings wird in der functions.php der Eintrag für list_pings gesucht.
Dieser muss noch dort noch eingeügt werden.
Functions-Code

Spoiler

function list_pings($comment, $args, $depth) {
$GLOBALS['comment'] = $comment;
?>
<li id="comment-<?php comment_ID(); ?>">
<?php comment_author_link(); ?> am <?php printf(__('%1$s'), get_comment_date('D., d.m.y')) ?>
<small><?php comment_text() ?></small>
<?php
}

[collapse]

Im WP-Forum gab es dazu einen interessanten Dialog.
Maxe gibt dort zahlreiche Hinweise.
So wird dort auch erklärt wie man getrennte Zähler einbaut.
Oder bei Frank Bültge nachschauen.

Optimierungen

siehe Teil 2:
Anzeige der Kommentare & Pings/Trackbacks optimieren

Umgesetzt habe ich die neue Kommentar-Funktion in meinem
House-of-Chicago Blog.

Schreibe einen Kommentar

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