WordPress bietet zum Handling von Kategorie-Entscheidungen zwei Funktionen. “is_category( /* category_id || category_name */ )” liefert true oder false, je nachdem, ob man sich auf der angefragten Kategorie-Seite befindet. “in_category( /* category_id */ )” liefert auf einer Beitragsseite ausserhalb von “the_loop();” die Information, ob sich der aktuelle Beitrag in der angefragten Kategorie befindet.
Schwach ist, dass “in_category” nicht funktioniert, wenn es sich um eine Unterkategorie, z.B. “PHP -> Snippets” handelt. Die Funktion erlaubt nur einen Paramater und dieser muß auch noch numerisch sein.
Etwas Erleichterung schafft der schnelle Hack “is_in_category()”. Zwar funktioniert dieser nicht rekursiv, hilft aber gegen x-mal wiederholte in_category()-Berge.
function is_in_category( ) { if( func_num_args() > 0 ) { foreach( func_get_args() as $category ) { if( in_category( $category ) ) { return( true ); } } } return( false ); } |
Der Aufruf if( is_in_category( 3, 5, 6 ) ) liefert true, wenn sich der abtuelle Post in einer der Kategorien befindet. False sonst.
sehr schöne Lösung!
Besteht dieses Problem nur bei WordPress 2.3. Ich hatte nach der 2.3 Installation Problemen mit meinen Kategorien und deshalb noch nicht alle Blogs upgedatet.
Das “Problem” bestand schon immer. Möglicherweise werden diese Funktionen ja in zukünftigen WordPress Versionen rekursiv.