Deutsch English
WordPress Diesen Artikel auf Deutsch lesen

Highlighting admin comments in WordPress

Many WordPress users wish to visually highlight their own responses between the comments on a post, so that you recognize at the first glance which comments come from the site operator and which ones from normal visitors. So do I.
A Google search revealed that it is most often being recommended to simply compare the commentator’s user ID with your own one, and if they match, assign a second, special CSS class to the comment. That would look something like this:

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

I don’t like that very much. What if a site has multiple writers and you would like to highlight the comments of all of them? Should it look like this then?

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

I think we all agree that this is not very beautiful. ;) Besides, each time you admit a new member to your “editorial team”, you would have to fiddle around with the template again in order to enter his user ID there.
No, no, that’s not the way you do it. It would be a lot better if you simply checked the commentator’s user level, because if it is above 0, you know that you are dealing with one of the site’s “staff members”.

That will look like this:

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

This way, all comments from contributors (level 1), authors (level 2–4), editors (level 5–7) and admins (level 8–10) will get a different style. Of course, you can even refine the whole thing with the aid of these levels, e. g. if you only want to change the appearance of admin and editor comments, but not the one of author and contributor comments.



Comments

1 2

  1. 21st September 2011
    5:23 pm

    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. 20th September 2011
    6:56 pm

    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. 20th September 2011
    6:51 pm

    Jan flag

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

  4. 20th September 2011
    4:55 pm

    Jan flag

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

  5. 14th September 2011
    2:45 pm

    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. 14th September 2011
    1:52 pm

    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. 13th September 2011
    3:23 pm

    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. 13th September 2011
    2:18 pm

    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. 20th June 2011
    4:18 pm

    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

Write comment

Allowed 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=""> | Code snippets can be posted in `backticks`. Example: `<?php echo "Hi!"; ?>`