RSS Feed

WordPress function is_in_category();

27.12.2007 by naden

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.


3 Kommentare »

  1. Frank sagt:

    sehr schöne Lösung!

  2. Bastian sagt:

    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.

  3. naden sagt:

    Das “Problem” bestand schon immer. Möglicherweise werden diese Funktionen ja in zukünftigen WordPress Versionen rekursiv.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>