Die body_class Funktion ist nützlich, um dem Body-Tag viele Klassen hinzuzufügen, die Informationen darüber enthalten, welche Art von Seite gerade angezeigt wird. Wahrscheinlich zu Styling-Zwecken. Aber aus welchem Grund auch immer, sie enthält keine Klasse für die aktuelle Kategorie (oder Kategorien) für einen einzelnen Beitrag.
Dies fügt diesen Kategorie-"schönen" Namen hinzu
add_filter('body_class','add_category_to_single');
function add_category_to_single($classes) {
if (is_single() ) {
global $post;
foreach((get_the_category($post->ID)) as $category) {
// add category slug to the $classes array
$classes[] = $category->category_nicename;
}
}
// return the $classes array
return $classes;
}
Guter Tipp! =]
Seien Sie nur vorsichtig, dass keine Kategorie mit einer bestehenden notwendigen body_class kollidiert. Eine bessere Option wäre, ein benutzerdefiniertes
[data-*]Attribut auf dem<body>Element hinzuzufügen, damit es sich um separate Daten handeltZ.B.
Das Tolle an
[data-*]Attributen ist, dass Sie sie immer noch mit CSS stylen könnenGroßartig! Aber wie erstellt man das? Gibt es eine Möglichkeit, das in functions.php zu tun?
Ich stimme dem zu. Das wäre eine sehr elegante Lösung. Ich glaube nicht, dass das innerhalb dieses Filters / dieser Funktion funktioniert. Sie müssten wahrscheinlich add_action verwenden, um irgendwie ein Attribut zum Body-Element hinzuzufügen.
Das zweite Argument
$classverursacht bei mir einen Fehler. Ich habe nur dieses Argument entfernt und das funktioniert perfekt.Ebenso!
Ebenso
Bei mir dasselbe. Vielen Dank für diesen Code!
Ich habe das gleiche Problem wie Kaela. Funktioniert einwandfrei, solange ich das
$classArgument weglasse. Vielen Dank!Beachten Sie, dass Sie dies wahrscheinlich nicht im Administrationsbereich ausführen möchten. Verhindern Sie dies mit is_admin()
Ich benutze das auf https://snapagency.com und die obige Anregung brauchte einen Moment, um herauszufinden, was die Änderung war… das Entfernen des zweiten $class hat den Trick gemacht und der Code sieht so aus:
Ich arbeite daran, dass das oben Genannte funktioniert. Was ich versuche, ist, den Kategorienamen als Klasse zum einzelnen Beitrag hinzuzufügen, auch wenn er auf der Homepage oder dem Blog-Index angezeigt wird. Auf diese Weise kann ich Styling-Anpassungen am Beitrags-Layout basierend auf der Kategorie vornehmen – z. B. unterschiedliche Textfarben für jede Kategorie.
Für mich funktioniert der folgende Code für einzelne Beiträge.
Aber ich brauche so etwas für die Anzeigen-Seite
Kann mir jemand helfen?
Dieser Code scheint nur eine Klasse hinzuzufügen, auch wenn der Beitrag mehreren Kategorien zugeordnet ist. Wie könnte der Code angepasst werden, um für jede einzelne Kategorie eine Klasse hinzuzufügen?
Das wäre ein köstlicher Kniff.
Hallo,
Bei mir hat es nicht funktioniert. Die body classes haben sich überhaupt nicht geändert. Ich habe den obigen Schnipsel in meine function.php kopiert und sonst nichts. Mein Theme verwendet das Plugin ACF (advanced custom field), könnte das der Grund sein, warum es nicht funktioniert.
Danke für Ihre Hilfe
Das funktioniert für reguläre Beitragstypen, aber nicht für benutzerdefinierte Beitragstypen, zumindest nicht, wenn ich es versuche.
Gibt es eine Idee, wie man es auch für die Kategorien von benutzerdefinierten Beitragstypen zum Laufen bringt?
Ich versuche, meiner Theme-Beitrags-Klasse eine Klasse hinzuzufügen, wenn sie von einer bestimmten Kategorie stammt. Ich möchte nicht alle Kategorien einschließen.