WordPress 2.7: HTML-Struktur der Kommentare ändern

WordPress 2.7: HTML-Struktur der Kommentare ändern

Diese Anleitung bezieht sich ausschließlich auf WordPress 2.7 und die darin enthaltenen neuen erweiterten Kommentarfunktionen. Wie man die Kommentare in seinem eigenen Theme für WordPress 2.7 bereit macht kann man hier und hier (auf deutsch) nachlesen.

Dadurch, dass die Kommentarschleife durch die Funktion wp_list_comments() ersetzt wurde ist man per default auch auf die HTML-Struktur, die WordPress vorgibt, beschränkt. Sicherlich gibt es genug Punkte, um via CSS anzusetzen, dennoch reichen die Möglichkeiten unter Umständen nicht aus. Glücklicherweise kann man ohne Hacks die Ausgabe der Kommentare den eigenen Wünschen anpassen.

Zuerst einmal muss man die Funktion wp_list_comments wie folgt erweitern:

Der Callback Parameter verweist auf eine noch zu erstellende Funktion list_comments die sich um die Aufbereitung jedes einzelnen Kommentars kümmert. Diese sollte man möglichst in der functions.php im Theme-Ordner ablegen. Ist die Datei noch nicht vorhanden kann sie einfach erstellt werden. Um fürs erste die Standardausgabe zu kopieren fügt man folgendes ein:



  <  id="comment-">
  
< ?php if ($args['avatar_size'] != 0) echo get_avatar( $comment, $args['avatar_size'] ); ?> < ?php printf(__('%s Says:'), get_comment_author_link()) ?>
comment_approved == '0') : ?>
$add_below, 'depth' => $depth, 'max_depth' => $args['max_depth']))) ?>

Viel Code auf einmal, aber der Reihe nach: Durch Zeile 3 wird das aktuelle Kommentar global verfügbar, dadurch können die einzelnen Funktionen von WordPress auch darauf zugreifen. Zeile 5 - 11 formatieren den Anfangs-Tag basierend auf dem Parameter style, den man wp_list_comments mitgeben kann. Danach folgt auch schon die Ausgabe des Kommentars, dem geübten Theme-Entwickler dürften die meisten Funktionen sofort bekannt vorkommen. Neu sind die Funktionen comment_class, die dem Anfangs-Tag (oder jedem anderen Tag, falls gewünscht) die entsprechenden Klassen zuweist, sowie comment_reply_link, der den Link erzeugt, mit dem man eine Antwort zu einem Kommentar verfassen kann.

Ferner interessant ist das Array $args, dass Parameter bereithält, im speziellen $args['avatar_size'] für die Größe des Avatars sowie $args['max_depth'] für die maximale Tiefe der Verschachtelung. Setzt man die Parameter ein lassen sich die Werte im WordPress Backend direkt ändern - wichtig für Themes, die zum Download bereitgestellt werden sollen!

Im folgenden möchte ich kurz die Veränderung am Theme Aeros zeigen, damit die Ausgabe wieder korrekt ist. Die ursprüngliche Struktur eines Kommentars sieht wie folgt aus:

  • Hi, ich bin ein Kommentar!
    Kommentar | Datum
  • Zugegeben, recht simpel, für Anschauungszwecke aber völlig ausreichend. Damit WordPress 2.7 damit etwas anfangen kann muss unsere Funktion list_comments also wie folgt abgeändert werden:

    
    
       <  id="comment-">
    
    < ?php if ($args['avatar_size'] != 0) echo get_avatar( $comment, $args['avatar_size'] ); ?> < ?php comment_author_link(); ?>
    Kommentar | < ?php printf(__('%1$s'), get_comment_date('F jS, Y')); ?>< ?php edit_comment_link('edit','  ','') ?>
    $add_below, 'depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
    } ?>

    Der einführende li-Tag wurde durch $tag ersetzt, das ist eigentlich nicht nötig, da im Theme ja ohnehin fest vorgegeben, schaden kann es aber trotzdem nicht. Die Klassen sind nicht zwingend notwendig, können aber bei Anpassungen via CSS nützlich sein. Beim Rest wurden die einzelnen Elemente durch die entsprechenden WordPress-Funktionen ersetzt. Neu hinzukommen ist der div-Container mit der ID div-comment-KommentarID, der das gesamte Kommentar umschließt sowie der div-Container mit der Klasse reply, der wiederum den Antworten-Link beinhaltet. Beide Container müssen (in dieser Struktur) vorhanden sein, damit das Kommentarformular an die korrekte Position (in den reply-Container) verschoben werden kann, wenn man auf den Antworten-Link klickt.

    Mit verhältnismäßig wenig Aufwand kann man den Kommentaren also eine eigene HTML-Struktur geben und trotzdem die neuen Funktionen von WordPress 2.7 nutzen.

     
    Tweet This
    0 Votes 1 Star
    Ähnliche Beiträge

    8 Trackbacks

    1. 09.11.2008 - WP 2.7 Kommentare via CSS gestalten - neues CSS für Themes nötig
    2. 12.11.2008 - Links XXIII - Peter Kröner - Die Kunst des Machbaren
    3. 10.12.2008 - WordPress 2.7- die ultimative Hilfeliste
    4. 25.12.2008 - Wordpress 2.7: Kommentare formatieren - eckig
    5. 19.01.2009 - Mal gucken, wem es auffällt. auf Wer ist eigentlich Paul?
    6. 01.03.2009 - Linkdump Februar 2009 [martin-grandrath.de]
    7. 28.03.2009 - Threaded Kommentare - Info und Anpassungen | Bellissimo - Kindermode und Geschen [...]
    8. 28.03.2009 - WordPress 2.7- die ultimative Hilfeliste | Bellissimo - Kindermode und Geschenka [...]

    Diskussion: 11 Kommentare

    1. pasQualle (Website)

      Klar ist es nett, die ganzen forifelsewhile Schleifen, durch solch ein nettes template tag zu ersetzen, aber wenn man letztendlich nicht einmal das Aussehen seiner Kommentare damit bestimmen kann, was bringt es mir dann?
      Ich kann mir irgendwie nicht vorstellen, dass das alles durch Parameter des template tags möglich sein wird.

      Und ach, ja. Ich will ja jetzt nicht meckern oder so ;), aaaaber wenn du schon Code einfügst, dann sollte man ihn auch einfach copy&pasten können, ohne noch Leerzeichen killen zu müssen oder sich den Kopf zu zerbrechen, was Zeile 13 im ersten Schnipsel bedeuten soll. Merci

      08. November 2008 um 17:45 Uhr - AntwortenReply to this comment
    2. Jeriko (Website)

      Du kannst doch damit das Aussehen ändern, das ist doch der “Trick” dabei. Durch das Verändern der HTML-Struktur kann man sich ja mehr, bzw. andere Ansätze schaffen, um via CSS zu stylen, als es der normale Output von WordPress evtl. ermöglicht.

      08. November 2008 um 18:04 Uhr - AntwortenReply to this comment
    3. pasQualle (Website)

      Ach ja, hier, wo wir gerade dabei sind. Das hervorheben der Autorenkommentare fällt dadurch auch erstmal weg. Vielleicht magst dir da ja mal drüber Gedanken machen, ich würds ja selbst tun, aber ich bin ja schon froh, wenn ich beim Kopieren von Code keinen Fehler mache ;)

      08. November 2008 um 19:24 Uhr - AntwortenReply to this comment
    4. Tarek

      Jo in zeile 13 ist was schief gelaufen aber das “<” zeichen wird man ja wohl noch löschen können ;)

      Im Übrigen ein guter Lösungsanstatz für die angepasste Ausgabe von Kommentaren.

      08. November 2008 um 19:28 Uhr - AntwortenReply to this comment
    5. Jeriko (Website)

      comment_class() stellt massig Klassen pro Kommentar zur Verfügung, unter anderem auch “bypostauthor”, wenn der Kommentar vom Autor des Beitrags kommt.

      08. November 2008 um 19:34 Uhr - AntwortenReply to this comment
    6. Jeriko (Website)

      Das ist kein Tippfehler, das erste “<” öffnet den HTML-Tag, das zweite ist von bzw. für PHP.

      08. November 2008 um 19:44 Uhr - AntwortenReply to this comment
    7. pasQualle (Website)

      Ich hab mir bypostauthor mal angeschaut, und verstehe so grob auch was ich machen müsste, damit die Autorenkommentare hervorgehoben werden. Ich werde mich einfach mal dran versuchen.

      08. November 2008 um 23:46 Uhr - AntwortenReply to this comment
    8. ritchie (Website)

      Feine und gut verständliche Anleitung – außerdem “updateresistent”. Der Ansatz, eine eigene Function für die Anpassung der Commentlist zu bauen, gefällt mir gut, thx 4 sharing.

      10. November 2008 um 23:16 Uhr - AntwortenReply to this comment
    9. Simon

      sehr gute Anleitung!

      Ich hätte allerdings noch eine Frage: Wie kann ich denn die Ausgabe der Trackbacks und Pingbacks so verändern, dass ich nur den Titel anzeige? Quasi wie bei dir?

      12. November 2008 um 13:21 Uhr - AntwortenReply to this comment
    10. Jeriko (Website)

      Hier steht, wie Ping-/Trackbacks und Kommentare separat angezeigt werden können. Bei der Auflistung der Pingbacks gibst du dann eine andere Callback-Funktion an (list_pings z.B.) und stylest die dann nach deinen Wünschen, also z.B. nur den Titel anzeigen lassen.

      12. November 2008 um 13:40 Uhr - AntwortenReply to this comment
    11. Simon

      Du hast recht, da war ich etwas voreilig… Hatte es in der Zwischenzeit auch verstanden :-)

      Nur das Problem ist, dass er bei diesem Code auch wieder die Pingbacks mit anzeigt.
      Ich schätze, man muss jetzt noch in den Parametern ‘type=pings’ bzw. ‘type=comments’ mit angeben?!

      12. November 2008 um 13:47 Uhr - AntwortenReply to this comment

    Kommentar schreiben

    SEOs brauchen es erst gar nicht probieren, werbliche Kommentare (Links zu Shops, Firmen, o.ä.) werden ebenfalls als Spam markiert. Wenn ihr etwas völlig anderes beisteuern wollt, dann bitte über den normalen Kontakt.

    oder

    neuerer beitrag (h) | älterer beitrag (l)
    blogoscoop