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