Aktuelle Kategorie in der Post-Einzelansicht hervorheben

Aktuelle Kategorie in der Post-Einzelansicht hervorheben

8. Januar 2009 in WordPress Funktionen 8 Kommentare

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=&current_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=&current_category='.$currentcat);
    ?>
</ul>

Relevante Links

, ,

Simon [webdemar]

Moin, ich bin Simon und betreibe webdemar.com als meine ernstgemeinte Spielwiese für WordPress, Webdesign und so.

RSS abonnieren Twitter

8 Kommentare

  • Bantai
    8. Januar 2009

    Danke, genau das habe ich gesucht :-D

  • 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:

      <ul class="sf-menu">
          <li <?php if(is_front_page()) echo 'class="current"'; ?>><a href="<?php bloginfo('url'); ? rel="nofollow">"><?php _e('Home','destyle'); ?></a></li>
          <?php
              if(is_single()) : $category = get_the_category(); $current_cat = $category[0]->cat_ID; else : $current_cat = ''; endif;
              $ex_cats = get_option('destyle_exclude_cats'); wp_list_categories('title_li=&current_category='.$current_cat.'&exclude='.$ex_cats);
          ?>
      </ul>
  • 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 :)

Kommentar schreiben

Dein Name hier
Dein Name hier
11. March 2010

Gravatars sind an. Jetzt kostenlos registrieren!

WordPress Hosting

Für das Hosten von WordPress Blogs empfehlen wir Webspace von Hostloco.
Eine ganze Fotowelt mit nur einer Software - Fotobuch-Software von CEWE.

So am Rande

WordPress 2.8.6 Security Release - 16. November 2009

WordPress versorgt uns von der nächsten großen Version 2.9 noch mit einem weiteren Sicherheits-Release – WordPress 2.8.6. Damit wird eine [...]

WordPress 2.8.5 schließt Sicherheitslücke - 21. Oktober 2009

Seit heute Nacht ist WordPress 2.8.5 zum Download erhältlich. Obwohl schon alle Maschinen für die Version 2.9 laufen, schließt WordPress [...]

WordPress 2.9 kündigt sich an - 14. Oktober 2009

Bald ist es soweit und die erste Beta-Version von WordPress 2.9 wird zum Download erhältlich sein. Das soll laut Peter [...]

Link: Anleitung zur Erstellung von Theme-Options in einem WordPress-Theme - 5. Oktober 2009

Wer ein professionelles WordPress-Theme erstellen möchte, kommt um Theme-Options, einer separaten Seite für Theme-Einstellungen im WordPress-Admin, nicht herum. Theme-Options bieten [...]

Link: Digging into WordPress - 1. Oktober 2009

Sollte es unter Euch einen WordPress-Begeisterten geben, der diese Seite noch nicht kennt, möchte ich ihm diese hiermit vorstellen. Auf [...]

Kostenloser Mozilla Firefox Download des aktuellen Mozilla Firefox Browser.
Offizielles Stadtportal für München. Ein Service für die Landeshauptstadt München.
Do you like this theme?

Powered by WordPress.org - Copyright © 2009. Alle Rechte vorbehalten - Professional WordPress Themes