Wer selber Betreiber eines WordPress-Blogs ist und nicht eines der vielen freien Templates verwendet, wird sicherlich auch schon einmal zu dem Punkt gekommen sein, an dem es an die Gestaltung der Kommentare unterhalb der Seiten oder Einträge geht. Zunächst sieht alles ganz einfach aus, schließlich besitzt jeder Kommentar eine Fülle von CSS Klassen, unter anderem auch parent oder even bzw. odd. Doch da spielt uns WordPress einen Streich…
Wenn man nämlich die Verschachtelung, also das Antworten auf Kommentare ermöglicht, so wird auch jede Antwort als weiterer (übergeordneter) Kommentar gezählt und somit bekommt bei genau einer Antwort eben der zweite Übergeordnete die gleiche Klasse (even/odd) wie sein Vorgänger. Meiner Meinung nach ist das eigentlich nicht der Sinn der Sache. Hier mal ein kleines Beispiel:
So macht es WordPress:
- even
- odd
- even
- odd
- even
- odd
- even
So müsste es meiner Meinung nach sein:
- even
- odd
- odd
- even
- odd
- even
- odd
Zumindest, wenn man so wie ich, die Übergeordneten Kommentare optisch abtrennt.
Wen man einen Blick in die Datei comment-template.php schaut, sieht man auch folgendes:
if ( $comment_alt % 2 ) {
$classes[] = 'odd';
$classes[] = 'alt';
} else {
$classes[] = 'even';
}
Es wird also jeder Kommentar, egal welcher Tiefe gleich behandelt.
Die (einfache) Lösung
Zum Glück gibt es mit dem CSS3 Selektor :nth-child ein nützliches Werkzeug für solche Aufgaben.
Statt
ol.commentlist li.even { ... }
ol.commentlist li.odd { ... }
schreiben wir also
ol.commentlist li:nth-child(2n+1) { ... }
ol.commentlist li { ... }
Statt … müsst ihr natürlich eure Hintergrundfarbe etc. zuweisen.
Was macht also :nth-child?
Wir geben in Klammern 2n+1 an, das heißt jedes 2n+1-te (Geschwister-)Element (child ist also ein leicht irreführender Bezeichner) wird damit angesprochen. Es gibt alternativ auch die Möglichkeit, einfach odd oder even dort einzusetzen.
Mit diesem kleinen Trick wird allerdings mal wieder der Internet Explorer 6-8 außen vor gelassen. Da gibt es allerdings auch einen Trick mit jQuery… aber das vielleicht später. Falls Bedarf besteht, kann ich das hier auch noch einmal erläutern. Wer noch mehr wissen möchte, schaut beim W3C vorbei.
Die kompliziertere Lösung wäre natürlich PHP-Programmierung im WordPress-Core, aber das sei zunächst einmal Anderen überlassen. Vielleicht ändert sich da ja in den nächsten Versionen etwas.
P.S.: Wer es ausprobieren möchte, schreibt hier einfach einen Kommentar