Hinzufügen des classnnamens zur function “_category ()”?

add_filter es möglich, add_filter oder etwas Ähnliches zu verwenden, um den slug der Kategorie als classnnamen zur function the_category() ?

Im the_category() sieht die Ausgabe bei Verwendung von the_category() so aus …

  

Ist es möglich, das irgendwie zu bekommen …

  

Oder etwas ähnliches, zumindest ein classnname mit dem slug der Kategorie, damit ich ihn über CSS auswählen kann?

Vielen Dank im Voraus, matt.

Solutions Collecting From Web of "Hinzufügen des classnnamens zur function “_category ()”?"

the_category() im Codex the_category() . Scrollen Sie bis zum Ende der Seite zu “Quellcode”. Es gibt einen Link ” the_categfory() befindet sich in …”. Klicken Sie auf den Link, um zum Quellcode weitergeleitet zu werden . Alternativ öffnen Sie die Datei wp-includes/category-template.php in Ihrer IDE oder Ihrem Editor.

Suchen Sie nun nach der function the_category() . Sie werden sehen, dass die function eine andere function get_the_category_list() . Suchen Sie auch nach dieser function. Und jetzt lesen Sie den Code und suchen Sie nach apply_filters() oder add_action()

Wie Sie sehen, gibt es nur einen Aufruf apply_filters() am Ende der function. Wenn Sie den Code sorgfältig lesen, wissen Sie jetzt, dass Sie nur den gesamten von the_category() erzeugten the_category() Code filtern können.

Es gibt mehrere Möglichkeiten, den HTML-Code zu ändern. DOMDocument ist eine von ihnen, eine gute alte preg_replace_callback() andere.

 function add_class_callback( $result ) { $class = strtolower( $result[2] ); $class = str_replace( ' ', '-', $class ); // do more sanitazion on the class (slug) like esc_attr() and so on $replacement = sprintf( ' class="%s">%s', $class, $result[2] ); return preg_replace( '#>([^< ]+)#Uis', $replacement, $result[0] ); } function add_category_slug( $html ) { $search = '#]+(\>([^< ]+)\)#Uuis'; $html = preg_replace_callback( $search, 'add_class_callback', $html ); return $html; } add_filter( 'the_category', 'add_category_slug', 99, 1 ); 

Das ist einfach, oder? Wenden Sie einen Filter auf the_category Hook der the_category . Suchen Sie nach [group the chars until < ] , übergeben Sie das Ergebnis an die Callback-function. Die Callback-function ruft ein Array mit allen Suchergebnissen ab, wir wählen das letzte aus, das ist der Text des Links. Dann erstellen Sie eine class aus dem Text, bitte säubern Sie dies sehr gut (durch Ihre eigenen). Zu guter Letzt fügen Sie das classnattribut ein und geben das generierte Ergebnis zurück an preg_replace_callback() während es durch das Suchergebnis ersetzt wird.

Ja, ich mag DOM-Manipulation sehr … nicht;)

Oh, ich habe es vergessen. Sie können dies auch mit jQuery tun. Suchen Sie nach der class ‘.post-categories’, grep alle Link-Tags in einem Listen-Tag, gehen Sie über das Ergebnis und holen Sie sich die href-Attribute, konvertieren Sie es in einen passenden classnnamen, fügen Sie die class mit .addClass(class) zum link-Tag hinzu .

Während das Bereinigen von classnnamen in einigen Sprachen sehr schwierig sein kann, bevorzuge ich @ powerbuoy’s Kommentar und habe das herausgefunden:

 function yourTheme_category_class($thelist){ $categories = get_the_category(); if ( !$categories || is_wp_error($categories) ) { return $thelist; } $output = ''; return $output; } add_filter( 'the_category', 'yourTheme_category_class'); 

Ich hoffe, dass das helfen kann, Prost