Deutsch English
WordPress Read this post in English

Admin-Kommentare in WordPress hervorheben

Viele WordPress-Benutzer möchten bei den Kommentaren zu einem Post gerne ihre eigenen Antworten optisch hervorheben, damit man gleich auf den ersten Blick sieht, welche Kommentare vom Seitenbetreiber stammen und welche nur von ganz normalen Besuchern. So auch ich.
Eine Google-Suche ergab, daß hierzu meistens empfohlen wird, die User-ID des Kommentators einfach mit seiner eigenen abzugleichen, und wenn sie gleich sind, dann wird dem Kommentar eben eine zweite, besondere CSS-Klasse zugewiesen. Das sähe dann also etwa so aus:

<li class="comment<?php if($comment->user_id == 1) echo ' admincomment'; ?>">

Mir gefällt das so nicht. Was ist, wenn eine Seite mehrere Schreiber hat und man gerne die Kommentare aller Mitwirkenden hervorheben möchte? Soll das dann etwa so aussehen?

<li class="comment<?php if($comment->user_id == 1 || $comment->user_id == 3 || $comment->user_id == 13 || $comment->user_id == 753) echo ' admincomment'; ?>">

Ich glaube, da sind wir uns alle einig, daß das nicht so schön ist. ;) Außerdem müßte man dann jedesmal, wenn man ein neues Mitglied in seine „Redaktion“ aufnimmt, wieder im Template rumfummeln, um dessen User-ID dort einzutragen.
Nein, nein, so macht man das nicht. Viel besser wäre es doch, wenn man einfach das User-Level des Kommentators prüft, denn sobald dieses höher als 0 ist, weiß man, daß es sich um einen „Mitarbeiter“ der Seite handelt.

Das sieht dann so aus:

<? $userdata = get_userdata($comment->user_id); ?>
<li class="comment<?php if($userdata->user_level > 0) echo ' admincomment'; ?>">

So bekommen alle Kommentare von „Contributors“ (Level 1), Autoren (Level 2–4), Editoren (Level 5–7) und Admins (Level 8–10) ein anderes Aussehen. Natürlich kann man anhand dieser Levels das Ganze noch verfeinern, wenn man z. B. nur Kommentare von Admins und Editoren anders darstellen will, nicht aber die von Autoren und „Contributors“.



Kommentare

1 2

  1. 21. September 2011
    17:23 Uhr

    Jan flag

    Danke für deine Hilfe! :)
    Wirklich sehr nett….
    Tja, was die Farbe betrifft…mir gefällt es auch nicht soo aber ist ja 1. nicht für mich und 2. habe ich auch gleich eine andere Farbe gewählt, als ich das eben eingefügt habe, da das wirklich richtig „Augenkrebs“ war ;) :D

  2. 20. September 2011
    18:56 Uhr

    Ginchen flag

    Ok, hab‘ mir noch mal das Arras-Theme angesehen. Da geht es natürlich wieder nicht so einfach. ;) Mach es mal so:

    .bypostauthor .comment-node { background-color: #CD1CC4 !important; }

    P.S.: Uuuuh, Augenkrebsfarbe! :D

  3. 20. September 2011
    18:51 Uhr

    Jan flag

    Okay, funktioniert. Ist es auch möglich, den Hintergrund einzufärben? Und nicht den Text?
    .bypostauthor { background-color: #CD1CC4; }
    funktioniert nicht..

  4. 20. September 2011
    16:55 Uhr

    Jan flag

    Vielen Dank Ginchen, werde es gleich mal testen! :-)

  5. 14. September 2011
    14:45 Uhr

    Ginchen flag

    Habe mir „Arras“ gerade mal angesehen. Bei dem Theme befindet sich die Kommentar-Ausgabe in der Datei library/template.php. Darin findet man die Zeile:

    <li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">

    Die Funktion comment_class() ist einigermaßen „neu“ – als ich diesen Post 2008 schrieb, gab es sie noch nicht. Inzwischen sollte aber jedes halbwegs moderne Theme diesen Befehl nutzen. comment_class() versieht die Kommentare ganz automatisch mit verschiedenen Klassen, darunter auch byuser, comment-author-[deinname] und bypostauthor. Das bedeutet für Dich: Du musst in den PHP-Dateien überhaupt nichts mehr ändern! Du brauchst nur noch eine (oder mehrere) dieser Klassen mit CSS zu gestalten.

    Die Klasse byuser bekommen alle Kommentare, die von irgendeinem der Admins, Editoren, Redakteure oder was auch immer geschrieben wurden.
    comment-author-[deinname] sind explizit nur Deine eigenen Kommentare.
    bypostauthor sind die Kommentare, die von derselben Person geschrieben wurden, die auch den Artikel verfasst hat.

    Soll heißen, wenn Du in dein CSS nun sowas einfügst wie .bypostauthor { color: red; }, dann sollte das schon in etwa den gewünschten Effekt haben. ;)

  6. 14. September 2011
    13:52 Uhr

    Jan flag

    Danke für deine Antwort Ginchen.
    Konnte die Stelle leider nicht finden…typisch „Arras“ Theme…ist der größte Mist, wenn ich nur an die ganzen Code-Fehler denke…naja, könnte ich dir meine comments.php und die functions.php vielleicht schicken und du schaust mal rein?
    Wäre sehr nett, wenn du das machen würdest :-)

    Grüße
    Jan

  7. 13. September 2011
    15:23 Uhr

    Ginchen flag

    Das kommt immer auch ein wenig auf das Theme an. Meistens befindet sich der Code zur Kommentaranzeige in der comments.php, wie Du schon vermutet hast. Es gibt aber auch Themes (z. B. TwentyEleven), bei denen die Ausgabe in die functions.php ausgelagert ist. Am besten suchst Du einfach mal nach dem Befehl comment_text() – wo der steht, solltest Du richtig sein. ;)

    Irgendwo vor diesem Befehl – das kann je nach Theme direkt davor oder auch 10–20 Zeilen weiter oben sein – befindet sich in der Regel ein öffnendes li-Tag: <li ...
    In meinem Beispiel war das die Zeile <li class="comment">, die ich dann zu

    <?php $userdata = get_userdata($comment->user_id); ?>
    <li class="comment<?php if($userdata->user_level > 0) echo ' admincomment'; ?>">

    erweitert habe.

    Ich hoffe, Du kannst es jetzt finden – ist etwas schwierig zu erklären. :D

  8. 13. September 2011
    14:18 Uhr

    Jan flag

    Super Artikel, danke dafür!
    Eine Frage hätte ich jedoch trotzdem noch.

    Wo packe in den Code von oben aus dem Artikel rein?
    In die Comments.php? Wenn ja, wo dort genau?

    Danke für deine Antwort.

    Grüße
    Jan

  9. 20. Juni 2011
    16:18 Uhr

    Ali Schwarzer flag

    Einfach mal nach Postkarten zu gucken, da hätte ich ja auch mal drauf kommen können. Schließlich gucke ich ja auch immer nach CC-Fotos, wie man in meinem Blog sehen kann. :)

    Vielen Dank für den Link zu den Papierthemen. Den habe ich mir gleich mal gespeichert. Ganz unten gibt’s ein Tutorial mit einem total tollen Papier. Wenn ich Zeit habe, werde ich mir das mal zu Gemüte führen.

    Wegen des qTranslate-Problems schicke ich dir dann gleich eine Mail. Wie von Zauberhand scheinen jetzt die Umlautprobleme verschwunden zu sein. Witzigerweise sind die Datumsanzeigen nicht mehr zerschossen, dafür wurden die meisten Kommentare jetzt am 1. Januar 1970 gepostet. :D

1 2

Kommentieren

Erlaubtes HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <p> <pre lang="" line="" escaped=""> <q cite=""> <strike> <strong> <img src="" alt="" class="" width="" height=""> | Codeschnipsel können in `backticks` gepostet werden. Beispiel: `<?php echo "Hi!"; ?>`