Die Kategorien von WordPress können ein mächtiges Werkzeug sein, man kann aber auch daran verzweifeln, dazu ein anderes mal vielleicht mehr, aber es gibt auch nicht für jede Anwendung einen entsprechenden Template-Tag von WordPress und so muss man sich etwas bauen. Zwei kleine Sachen, die ich in letzter Zeit gebraucht habe und die ich nicht verstauben lasse will stehen nun in diesem Beitrag.
Liste aller Unterkategorien
Manchmal braucht man einfach nur eine Liste alle untergeordneten Kategorien, fragt nicht warum. Die Anforderungen von Projekten kann sehr vielfältig sein, ebenso der Lösungsweg und in meinem Fall ist ein kleiner Code-Schnippsel entstanden, die sich um die Ausgabe der Subcategories kümmert; zum mitnehmen, spielen, verbessern und erweitern.
$echo = '<ul>' . "\n";
$childcats = get_categories('child_of=' . $cat . '&hide_empty=1');
foreach ($childcats as $childcat) {
if (1 == $childcat->category_parent) {
$echo .= "\t" . '<li><a href="' . get_category_link($childcat->cat_ID).'" title="' . $childcat->category_description . '">';
$echo .= $childcat->cat_name . '</a>';
$echo .= '</li>' . "\n";
}
}
$echo .= '</ul>' . "\n";
echo $echo;
Abfrage, ob in Kategorie oder Subkategorie
Die zweite Sache brauchte ich nicht erstellen, die habe ich bei valen gefunden – klein aber fein. Sie gibt zurück, ob man sich in einer untergeordneten- oder der Haupt-Kategorie befindet. Brauchen kann man so was, wenn man komplexe Strukturen aufbaut und steuern will. Als Übergabe muss die ID der Kategorie mitgegeben werden, kein Slug!
function is_category_or_subcategory($catID = 0) {
foreach (get_the_category() as $cat) {
if ( $catID == $cat->cat_ID || cat_is_ancestor_of($catID, $cat) )
return true;
}
return false;
}
In dem Zusammenhang im übrigen der Hinweis auf die Funktion cat_is_ancestor_of()
– sehr mächtig und nützlich.