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:
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?
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); ?>
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.
19 responses to “Highlighting admin comments in WordPress”
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
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
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 diefunctions.php
ausgelagert ist. Am besten suchst Du einfach mal nach dem Befehlcomment_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 zuerweitert habe.
Ich hoffe, Du kannst es jetzt finden – ist etwas schwierig zu erklären. :D
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
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: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 auchbyuser
,comment-author-[deinname]
undbypostauthor
. 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. ;)Vielen Dank Ginchen, werde es gleich mal testen! :-)
Okay, funktioniert. Ist es auch möglich, den Hintergrund einzufärben? Und nicht den Text?
.bypostauthor { background-color: #CD1CC4; }
funktioniert nicht..
Ok, hab’ mir noch mal das Arras-Theme angesehen. Da geht es natürlich wieder nicht so einfach. ;) Mach es mal so:
P.S.: Uuuuh, Augenkrebsfarbe! :D
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