Ich möchte den Kategorie-Slug als class anzeigen.
Ich versuche zu codieren und lege das in functions.php
add_filter('the_category', 'my_custom_get_the_category_list'); function my_custom__get_the_category_list($thelist, $post_id = false ) { global $wp_rewrite; $categories = get_the_category( $post_id ); foreach ( $categories as $category ) { $thelist = str_replace('rel="', 'class="category-'.$category->category_nicename.'" rel="', $thelist); } return $thelist; }
Aber da stimmt etwas nicht. Ich benutze get_the_category_list()
in category.php
Dann zeigt jede Kategorie dieselbe class an.
Wo habe ich falsch gemacht?
Der Filter wird falsch verwendet. Für den Filter the_category
die korrekten Parameter “list”, “seperator” & “eltern”, nicht “post id”
Als add_filter
hat add_filter
einen vierten Parameter, der wordpress die Anzahl der Argumente mitteilt, die die function akzeptieren soll. Der Standardwert ist 1. In diesem Fall ist $ post_id immer falsch. Dann gibt get_the_category
die Kategorien des aktuellen Beitrags in the loop
(der redaktionell gemäß Ihrem HTML- get_the_category
muss).
Danach ist deine Logik auch falsch. Sie ersetzen rel="
mit den classn jeder Kategorie einzeln. Jeder Link enthält diese Zeichenfolge, so dass jeder Link schließlich jede Kategorienklasse bekommt. Vorausgesetzt, es gibt 3 erwähnte Kategorien, die in die foreach gehen, wird der endgültige HTML-Code
Wie Sie sehen können, hat jedes Element jetzt 3 classnattribute. Welchen von ihnen soll der Browser berücksichtigen?
Ich verstehe nicht, warum du die Dinge so get_the_category
wenn du get_the_category
direkt in category.php verwenden get_the_category
und dann selbst den HTML- get_the_category