Aktuelle Kategorie in der Post-Einzelansicht hervorheben
Mit der WordPress-Funktion wp_list_categories() kann die aktuelle Kategorie mit der CSS-Klasse current-cat im Menü hervorgehoben werden. Das gilt jedoch nur für Kategorieübersichten. Aber auch in der Einzelansicht macht das Sinn.
Ausgabe einer Liste der Kategorien
Wenn wir in unserem WordPress-Theme eine Liste der Kategorien ausgeben wollen, machen wir das ähnlich dem folgenden Beispiel mit der WordPress-Funktion wp_list_categories().
<ul id='cat-menu'>
<?php wp_list_categories('title_li='); ?>
</ul>
Bemerkung:
Automatisch wird dabei der Listenpunkt der aktuellen Kategorie mit der Klasse current-cat belegt, die wir beliebig im Stylesheet verarbeiten können (z. B. anderer Hintergrund). Dies geschiet aber, wie gesagt, nur in der Kategorieübersicht.
Hervorheben einer bestimmten Kategorie erzwingen
Für manche ist es sinnvoll, darüberhinaus die aktuelle Kategorie zu markieren, wenn man sich in der Einzelanischt eines Posts befindet. Das steigert die Orientierung der User.
Die WordPress-Funktion wp_list_categories() brint von Haus aus den Parameter current_category mit. Wenn man der Funktion mit diesem Parameter bspw. die Kategorie-ID 5 mitgibt, kann man erzwingen, dass die Kategorie 5 die Klasse current-cat erhält.
<ul id='cat-menu'>
<?php wp_list_categories('title_li=¤t_category=5'); ?>
</ul>
Abfrage der Kategorie(n) in der Einzelansicht
Um diese Anwendung dynamisch in der Einzelansicht eines Posts zu verwenden, fragen wir mithilfe der Funktion get_the_category() die Kategorie des jeweiligen Posts ab und speichern uns diese in einer Variable.
<?php
$category = get_the_category();
$currentcat = $category[0]->cat_ID;
?>
Bemerkung:
Hier speichern wir alle Kategorien, in die der aktuelle Post eingeordnet ist, mit get_the_category() als Array in der Variable $category. Mit $category[0]->cat_ID fragen wir die Kategorie-ID des ersten Objekts dieses Arrays ab und speichern diese wiederum in $currentcat.
Aktuelle Kategorie in der Post-Einzelansicht hervorheben
Die meisten von Euch werden das Kategoriemenü entweder in der header.php oder in der sidebar.php haben. Dort können wir nun die aktuelle Kategorie abfragen und das Menü zwingen, uns den Listenpunkt der ersten Kategorie des Posts mit der Klasse current-cat zu belegen.
<ul id='cat-menu'>
<?php
$category = get_the_category();
$currentcat = $category[0]->cat_ID;
wp_list_categories('title_li=¤t_category='.$currentcat);
?>
</ul>


9 Kommentare
Bantai - 8. Januar 2009
Danke, genau das habe ich gesucht
Marvin - 12. Januar 2009
jap, sehr hilfreich. danke sehr!
Chris - 16. Juni 2009
Danke für den Post. Hat mir weitergeholfen!!!
Jared - 24. Juni 2009
Hi
genau diese Lösung habe ich gesucht!!! Danke dir
Ein Fehler steckt im letzten Codeschnippsel aber noch drin, in PHP Variablennamen darf kein “-” verwendet werden.
Ich würde $current-cat in $currentcat ändern. Bei mir hats unter WordPress 2.8 nen dicken Fehler gemeldet.
lg
Simon [webdemar] - 24. Juni 2009
Hey Andreas,
vielen Dank! Da haste natürlich vollkommen Recht. Werde es abändern.
Jared - 26. Juni 2009
@webdemar
Ein weiterer unschöner Nebeneffekt des Codes ist, das man auf der Startseite “Home” UND eine Kategorie als aktiven Menüpunkt vorgesetzt bekommt. Ich weiß nicht so recht warum WordPress das nicht abfangen kann aber ich hab das ganze mit einer is_single Abfrage ausgegrenzt.
(is_single())
= dein codeschnippsel
else
= wp_list_category
Simon [webdemar] - 26. Juni 2009
@Jared
Den Code habe ich in der Zwischenzeit auch erweitert. Das könnte ich hier mal posten. In meinem Theme deStyle habe ich das erfolgreich wie folgt im Einsatz:
Jared - 26. Juni 2009
Ja so ungefähr habe ich es bei mir auch gemacht. Nur den Home Button habe ich an anderer Stelle eingefügt
Dietmar - 21. Mai 2010
Wow, endlich habe ich dadurch mein kleine s Problemchen mit den Kategorien lösen können! VIelen DanK!!!