Wie wird der Kategorie-Slug korrekt als class angezeigt?

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?

Solutions Collecting From Web of "Wie wird der Kategorie-Slug korrekt als class angezeigt?"

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