Im Folgenden geht es um ein Worpress Plugin von mir, welches es ermöglicht, die Kategorie(n) eines Artikels in der Navigation hervorheben, wenn man sich auf der Einzelseite eines Blogposts befindet.
Warum braucht man das Plugin?
WordPress ist zwar von Haus aus in der Lage, beim browsen durch die Kategorien eines Blog die aktuelle ausgewählte Kategorie optisch hervorzuheben. Dazu erhält die aktuelle Kategorie einfach die zusätzlich Klasse “current-cat” und kann mittels CSS definiert werden.
Ist man jedoch auf einer Artikelseite, ist diese Funktionalität nicht mehr gegeben. Egal ob ein Blogpost in einer oder in mehreren Kategorien ist, mit einer Standard-Wordpress-Installation findet man in der Liste der Kategorien keinen Hinweis, zu welcher Kategorie der aktuelle Artikel gehört.
Genau hier verschafft das Show-Active-Category Plugin Abhilfe.
Nach der Installation und Aktivierung des Plugins wird jede Kategorie, zu der ein Artikel gehört, um die Klasse “active_category” ergänzt. Diese Klasse MUSS danach im WordPress Stylesheet angelegt werden.
Achtung: Wird die Klasse “active_category” nicht per CSS beschrieben, hat das Plugin keine sichtbaren Auswirkungen!
Download:
show-active-category.zip (1,9 KB)
Installation und Benutzung des Plugins:
- Die Datei show-active-category.zip herunterladen und entpacken.
- Den entpackten Ordner show-active-category in das Verzeichnis wp-content/plugins kopieren bzw. per dahin FTP hochladen.
- Im WordPress Backend unter Plugins das Plugin “Show Active Category (while browsing a post)” aktivieren.
- Im Stylesheet des WordPress Themes eine Anweisung für die Klasse .active_category angeben.
- Fertig!
Getestet ist das bisher mit WP 2.5.1 und WP 2.6
Über Feedback zum Plugin freue ich mich natürlich.
Hi wie reagiert das Plugin, wenn ein Artikel in mehreren Kategorien gespeichert ist?
lg
This is a great help thanks. I was wondering why this wasn’t already core functionality but I guess that if you are using the categories as a navigation then having multiple categories highlighted (if the post has multiple categories assigned) could be confusing. Still, it would be good if this was an optional feature in wordpress.
Cheers!
@monika: es wird jede kategorie, zu der ein artikel gehört, mit der neuen klasse versehen, d.h. es werden auch mehrer kategorien hervorgehoben.
Leider ist bei WP 2.6.1 Schluß… Dort werden mit dem Plugin sämtliche Kategorien hervorgehoben :-(
hallo christine, danke für den hinweis. ich schau mir das heute abend mal an und versuche das problem zu lösen.
moin,
sehr nett das plugin, ABER… ;-)
… kann es sein, dass die oberkategorien (current-cat-parent) hierbei nicht berücksichtigt werden??
z.B.: wp_list_categories(‘depth=1′)
stylesheets-Klassen:
.current-cat,
.current-cat-parent,
.active_category
für die unterkategorien klappts, aber es sollten beide hervorgehoben werden.
danke schon mal vorab für feedback und natürlich für das plugin!
@cbeier: bist du dir sicher, dass das problem an wp 2.6.1 liegt? hab es gerade lokal getestet und kann den fehler nicht nachvollziehen.
@hc: es war gar nicht meine absicht, dass die oberkategorie(n) mit hervorgehoben. sollte so etwas tatsächlich gewünscht werden, könnte ich mir mal gedanken dazu machen, dass plugin dahingehend zu erweitern.
danke für das feedback!
ich hab es mal für mich angepasst. aber danke für deine reaktion!
grüße, hauke
hier meine änderungen:
————————–
if( is_single() ) {
$categories = wp_get_post_categories($post->ID);
foreach( $categories as $catid ) {
$cat = get_category($catid);
$catParent = get_category($cat->category_parent);
if(preg_match(‘#>’ . $cat->name . ‘#’, $text))
{
$text = str_replace(‘>’ . $cat->name . ‘‘, ‘ class=”active_category”>’ . $cat->name . ‘‘, $text);
}
else if (preg_match(‘#>’ . $catParent->name . ‘#’, $text))
{
$text = str_replace(‘>’ . $catParent->name . ‘‘, ‘ class=”active_category”>’ . $catParent->name . ‘‘, $text);
}
}
}
Hi Dirk, nee, war meine Dummheit. Funktioniert wunderbar!!
Blöd, wenn man lokal andere Inhalte hat und online irgendwie bei nem Artikel alle Kategorien aktiviert hat… *pfeiff*
Hi
Is there any way the (fantastic) plug in can be altered to affect the li tag and not the a tag, so that a nested list of categories can be given a display:block declaration and expanded and viewed when looking at a post within them.
(my full question is better explained <a href=”http://wordpress.org/support/topic/217532?replies=2#post-901986″here”)
Thanks!
vielen vielen dank für so ein grossartiges plugin, habe 2.7 und arbeitet einwandfrei, wenn es nur immer so einfach wäre. hast mir gerade zwei stunden arbeit erspart.
philipp
hate ja schonmal gecschrieben, nun habe ich eine frage, ist es auch möglich damit die kategorie, auf der man sich befindet, also in der adresszeile /category/kategorie1 irgendwie hervorzuheben?
gruß,
philipp
hi philipp, das habe ich jetzt nich verstanden. wo möchtest du was hervorheben?
Many thanks for sharing this, I have used it with WP 2.7 and it worked.
Tasin
Hi. I am using the plugin sorry I speak only English……………………………..is there anyway to easily adapt the code to highlight the parent of the active category?
Thanks>>
Andu
hallo,
zuerst mal danke fuer das plugin, und dass du es unter der GNUGPL veroeffentlicht hast :-)
ich habe das plugin modifiziert, dass es den “current-cat” tag ins li element schreibt (so wie wordpress dies auch tut wenn man die kategorie direkt auswaehlt), und nichtmehr ins a tag. heisst der style .current_cat greift auch beim plugin und man muss nicht extra ein neues style definieren.
die geaenderte foreach-schleife sieht wie folgt aus:
foreach (wp_get_post_categories($post->ID) as $catid) {
if (preg_match('#cat-item-' . $catid . '"#', $text)) {
$text = str_replace('cat-item-' . $catid . '"', 'cat-item-' . $catid . ' current-cat"', $text);
}
}
Dieses Plugin scheint mir perfekt für meine Seite (WP 2.9.2) zu sein, aber leider finde ich nicht die richtige Stelle für den css-Befehl :(
Habe eine suckerfish.css, tabs.css und style.css – Datei.
Kann mir jemand einen Tipp geben, ob ich auf dem Holzweg bin ;-)
Vielen Dank und freu mich schon tierisch wenns funzt. Und hier auch gleich die Frage, warum WP von Haus aus das nicht anbieten???!
LG
Frank
Hi!
I modified the code, so the class is added to the li tag
function show_active_category($text) {
global $post;
if( is_single() ) {
$a_categories = wp_get_post_categories($post->ID);
foreach( $a_categories as $catid ) {
$text = str_replace(‘cat-item-’.$catid, ‘cat-item-’.$catid.’ active_category ‘, $text);
}
}
return $text;
}
add_filter(‘wp_list_categories’, ‘show_active_category’);
thanks alot screenshine and Marcus. Marcus your last piece of code is exactly what I wanted, and i guess it’s what should be embed in the plug-in simply because you often have to deal with both a and and to design a perfect Menu ! Thanks ! And most of the time it’s where the main class stands.