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.


0 0 0


Mitdiskutieren

*