WordPress: Kategorien in der body_class ausgeben
So können Sie mit dem body_class Filter Kategorien in der Klasse des HTML-Bodies (Body-Tag) ausgeben.
Lange Zeit war mir die Bedeutung und Möglichkeiten der body_class() Funktion überhaupt nicht bekannt. Wenn man jedoch erstmal Blut geleckt hat, dann will man die Möglichkeiten nicht mehr missen.
Was macht eigentlich die body_class() Funtkion? Nun ganz einfach: Je nachdem wo man sich auf der WordPress-Seite befindet, fügt die andere Klassen-Namen in die Style-Klasse des HTML-Body-Tags ein. Befindet man sich zum Beispiel auf der Startseite, sieht das etwa so aus:
<body class="home">
Auf einer Beitragsseite wird zum Beispiel folgendes ausgegeben:
<body class="single postid-123">
Wobei die Klasse postid- natürlich dann die entsprechende Post-ID besitzt.
Für ein Kundenprojekt brauchte ich jetzt zusätzlich noch die Kategorie in der Body-Class. Mit dem entsprechenden Filter war das relativ schnell und unkompliziert umzusetzen:
function categories_body_classes($classes) { if (is_single()) { global $wp_query; $pid = $wp_query->post->ID; $cats = wp_get_post_categories( $pid ); foreach($cats as $cat) { $c = get_category($cat); $classes[] = 'category-'. $c->slug; } } return $classes; } add_filter('body_class', 'categories_body_classes');
Damit wird jetzt zum Beispiel für die Kategorie WordPress einfach die Klasse category-wordpress dem Body-Tag hinzugefügt.
<body class="single postid-123 category-wordpress">
Damit lassen sich ganz einfach per CSS recht individuelle Designs umsetzen – etwa unterschiedliche Farben für unterschiedliche Kategorien.
Mitdiskutieren