WordPress Theme – wie teilt man die Anzeige der Kategorien auf-wp-list-categories

Viele WordPress Themes haben mehr als eine Sidebar, dies möchten manche nutzen, um die Kategorien an unterschiedlichen Stellen anzuzeigen. Oder aber ganz eigene überschriften für die Navigation zu den Kategorien anzeigen, damit sich User besser auskennen.

edit am 13.1.2008 neues Beispiel und ein Quick & dirty Plugin eingefügt ;)

Achtung: Wer in seine Sidebar Widgets gezogen hat, kann dies so nicht nutzen!

Template Tag wp list categories

Die Kategorien werden mit dem template tag wp list categories angezeigt. Was kann dieser Template Tag, was kann er nicht, wo muss man aufpassen und wie kann man ihn für sich sinnvoll nutzen.


<?php wp_list_categories('arguments'); ?>

 

Man hat bei diesem Template Tag folgende Möglichkeiten. Neben den // steht die Erklärung dabei.


$defaults = array(
'show_option_all' => '',   // zeigt nicht alle Kategorien an

'orderby' => 'name',   // zeigt die Kategorien geordnet nach Namen 

'order' => 'ASC',   // ..in aufsteigender Reihenfolge an

'show_last_update' => 0, //zeigt nicht das Datum der letzten Akutalisierung

'style' => 'list', //  Ausgabe erfolgt als ungeordnete Liste

'show_count' => 0, //zeigt nicht wieviele Beiträge in einer Kategorie sind

'hide_empty' => 1, //zeigt leere Kategorien nicht an 

'use_desc_for_title' => 1,  //zeigt die optionale Kategorienbeschreibung  als title Attribut an.

'child_of' => 0, //  Ausgabe ist nicht an eine beschränkt auf das Vorhandensein einer bestimmten Unterkategorie

'feed' => '',  //zeigt keine Kategoriefeeds Links an

'feed_image' => '', //zeigt keine Bild zum Feed Link an

'exclude' => '',  //keine Kategorie ist ausgeschlossen

'include'=>'', //keine Kategorie ist speziell includiert -- schwierig zu erklären irgendwie ;)

'hierarchical' => true, // Unterkategorien werden genau unterhalb der Oberkategorie angezeigt

'title_li' => __('Categories'), //überschrift ist Kategorie

'echo' => 1 // erzeugt die Ausgabe
);

Besonderheiten des Template Tags wp list categories

Nutzt Du bei wp list categories include werden eventuell vorhandene Unterkategorien nicht automatisch angezeigt.

Nutzt Du bei wp list categories exclude werden eventuell vorhandene Unterkategorien ebenfalls ausgeschlossen.

Nutzt Du bei wp list categories hide empty = 1 werden Unterkategorien nur dann angezeigt, wenn die Oberkategorie nicht leer ist.

Beispiele mit wp list categories

Alle Kategorien- ausser die Leeren, Anzahl der Beiträge, eigene überschrift,


<ul>
<?php
wp_list_categories('show_count=1&title_li=<h2>' . __('WordPress Theme') . '</h2>' ); ?> 
</ul> 

Alle Kategorien, auch die leeren, geordnet nach ID der Kategorien, keine automatische überschrift.



<ul><li><h2>individuelle überschrift</h2>
  <ul><?php
wp_list_categories('hide_empty=0&orderby=id&title_li=' ); ?> 
   </ul></li></ul>

Kategorien mit der ID 3,5,7,9 ausgeschlossen, geordnet nach Name absteigend, Anzahl der Beiträge, eigene überschrift.



<ul><li><h2>individuelle überschrift</h2>
  <ul><?php
wp_list_categories('exclude=3,5,7,9&orderby=name&order=DESC&show_count=1&title_li=' ); ?> 
   </ul></li></ul>

Die IDs müssen immer von der kleinsten zur größten geordnet sein, sonst funktioniert dies nicht. Getrennt werden die IDs mit Koma, die letzte bekommt keines mehr . ;)

Wie erwähnt auch die Unterkategorien werden damit ausgeschlossen.

Nur die Kategorien mit der ID 5,7,8 anzeigen. Die optionale Kategorienbeschreibung NICHT als title Attribut nutzen.


<ul>
<?php
wp_list_categories('include=5,7,8&use_desc_for_title=0' ); ?> 
</ul> 

Die Kategorien ohne überschrift und ohne Listenelemente anzeigen

<?php wp_list_categories('title_li=&style=none'); ?>

Da dann WordPress die Links mit einem <br / > anzeigt, kann man in die functions.php des verwendeten Themes folgendes Quick und Dirty Plugin tippen:

add_filter('wp_list_categories', 'mts_br');

function mts_br ($output) {
  $output=preg_replace(':<a href(.*)>(.*)</a><br />:','<a href$1> $2 </a>',$output);
  return $output;
} 

Artikelhistorie

Erstveröffentlichung:4. Jänner 2008 @ 21:19
Geändert am 13. Jänner 2008 gegen 16.46

War dies für Dich hilfreich erzähl es ruhig weiter. Ich freue mich über Social Bookmark Links und auch über Kommentare.
30

30 Beiträge zu “WordPress Theme – wie teilt man die Anzeige der Kategorien auf-wp-list-categories

  1. Kommentar Autor
    Fabian Schulz
    Kommentar

    Ist es möglich alle Kategorien nebeneinander ohne List und ohne Titel darzustellen?

  2. Kommentar Autor
    Monika
    Kommentar

    Hi Fabian ich habe das Beispiel ganz unten dazugefügt,
    dass die Links nebeneinander erscheinen ist dann eine Frage des css.

    lg

  3. Kommentar Autor
    Fabian Schulz
    Kommentar

    Vielen Dank, doch nun macht er über nach jedem Link einen Zeilenumbruch, gibts da auch ne Möglichkeit dagegen?

  4. Kommentar Autor
    Monika
    Kommentar

    Hi Fabian habe oberhalb ein Quick & Dirty Plugin dazu hingetippt. ;)
    lg

  5. Kommentar Autor
    Phillip
    Kommentar

    wo muss man das Quick & Dirty Plugin in der datei genau hinzufügen? (nutze wordpress_DE 2.5)

  6. Kommentar Autor
    Monika
    Kommentar

    Hi Phillip
    in die functions.php des verwendeten Themes,
    hat es keine , dann einfach so eine Datei mit einem Texteditor erstellen,

    lg

  7. Kommentar Autor
    Phillip
    Kommentar

    das de_theme hat eine… nur egeal wo ich das eingefügt habe… es funktionierte nicht.

  8. Kommentar Autor
    Mark
    Kommentar

    Hallo, ich habe WordPress mit einer Statischen Startseite und einer statische Seite „Blog“ erzeugt auf der die Blogbeiträge erscheinen. Nun suche ich nach einer Lösung, dass die Blog Kategorien und das Archiv nur dann angezeigt werden, wenn man auf die Seite „Blog“ klickt, also nicht auf den statischen Seiten zu sehen ist.
    Für eine Idee wäre ich sehr dankbar! Grüße Mark

  9. Kommentar Autor
    Monika
    Kommentar

    Hi Mark

    ab wp 2.5 geht das so:

    ich nehme an sidebar.php

    <?php if (!is_front-page())  {?>
    all die Sachen, die Du anzeigen magst, wenn es NICHT die Startseite ist
    
    <?php }?>
    

    lg

  10. Kommentar Autor
    Jens Rimbach
    Kommentar

    Hallo,
    ich möchte gerne einen eigenen Link auf der Sidebar anzeigen. Wenn ich eine neue Blogroll anlege, erscheint diese automatisch unter der Überschrift „0“ , was ich nicht sehr prickelnd finde. Hättest Du da einen Tipp?

    Vielen Dank

  11. Kommentar Autor
    Monika
    Kommentar

    hi Jens

    normalerweise wird der Kategoriename angezeigt

    aber ich sehe bei deinem Link nicht mal WordPress….Glaskugeln sind auf Urlaub ;)

    lg

  12. Kommentar Autor
    hazel
    Kommentar

    hallo, wie kann ich die Kategorien ohne überschrift und ohne Listenelemente anzeigen, aber mit einem Trennelement wie zb. „•“ oder „–“ versehen?

    hoffe auf schnelle antwort, danle

  13. Kommentar Autor
    Monika
    Kommentar

    das steht im letzten Teil des Artikels, statt des
    suche dies

    '<a href$1> $2 </a>'

    und ändere in

    '- <a href$1> $2 </a>'
  14. Kommentar Autor
    Monika
    Kommentar

    Hi Florian ja klar ist dies möglich

    Du hängst mit einem & einfach den nächsten Paramenter dran

    so

    <?php wp_list_categories('title_li=&style=none&show_count=1'); ?>

    lg

  15. Kommentar Autor
    Florian
    Kommentar

    Hi, ist es möglich die Anzahl der Artikel in der Kategorie anzeigen zu lassen, wenn ich die Kategorien nebeneinandern angeordnet habe? Wenn ja, wie? :)

    Danke schonmal
    MfG Flo

  16. Kommentar Autor
    Florian
    Kommentar

    Danke, jetzt wird die Anzahl angezeigt aber die Kategorien werden wieder untereinander dargestellt. :/

  17. Kommentar Autor
    Monika
    Kommentar

    wunderbar :( dann lös es über css

    gib den li ein display inline und den li a ein float left

    die css class müßt ja da sein

    zu mehr Hilfe müßt ichs in Echtzeit sehen

    lg

  18. Kommentar Autor
    Florian
    Kommentar

    Ok danke für die schnelle Hilfe.^^
    Werd das mal probieren.

  19. Kommentar Autor
    Paul
    Kommentar

    Hallo,

    vielen Dank für diese Liste. Dank euch konnte ich endlich das Problem lösen, das die kategorienbeschreibung immer genutzt wurde.,

    Vielen Dank!

  20. Kommentar Autor
    David
    Kommentar

    hi, danke für das Tut. Zwar schon ein weilchen her, aber weisst du zufällig auch eine Lösung um Kategorien aus der Liste im Widget in der sidebar.php auszublenden? Ich würde ungern das Core-plugin verändern…

    Danke schon mal

  21. Kommentar Autor
    Monika
    Kommentar

    Hi David Du kannst Dir das Plugin Exec PHP holen und mit diesem kannst Du code direkt in ein Textwidget einfügen-das ist die einfachste Lösung

    lg

  22. Kommentar Autor
    nastorseriessix
    Kommentar

    Über eine Empfehlung bezüglich Tutorial für mein Kategorie-Problem kam ich hierher und habe erst mal gestöbert. Bis ich dann diesen Artikel hier gefunden habe, aber die darin beschrieben Lösung funktioniert nicht bei mir.

    Unter „http://dev.kranzkrone.de“ kannst du mal schauen wie es aktuelle aussieht mit den Kategorien im laufenden Betrieb.

    Dabei verwende ich „“ zum anzeigen der Kategorien.

    Das bringt mir zwar die Liste, mit Artikel-Anzeige pro Kategorie, aber nicht als Blockform so nebeneinander. Damit die Erklärung dazu nicht hier den Rahmen sprengt schau doch mal unter: „http://www.blog.kranzkrone.de/2009/07/06/erste-einblicke-in-blog-design-version-3-0/“ dort so in der Mitte des Artikel sind 2 Screenshots. Ersterer ist davon wie es bisher lokal aussieht und der zweite wie es aussehen sollte, wie ich es bei einem anderen Blog gesehen habe.

    Habe natürlich deine Ausführungen mal probiert, passt aber alles nicht wirklich. Komme da einfach nicht weiter bei meinem Problem und Du scheinst die einzige Hilfequelle in greifbarer Nähe zu sein.

  23. Kommentar Autor
    Monika
    Kommentar

    wenn die Anzeige mal stimmt –haperts am HTML und CSS —

    packe jede Kategorie Einheit in eine Liste ul und drumherum ein div

    div id kategorien

    ul ….

    ul..
    diesen ul gibts du eine fixe Breite (ausrechnen wieviel Platz du hast)
    980:6 und dann nimmst du überall noch 5px weg aus Sicherheitsgrünen für diverse browser,
    jede Liste gibst du dann ein float:left, display:block padding:0 das ist wichtig – sonst krachts im IE

    dann gugg mal wies aussieht und meld dich–ich bin ab morgen aber bis Montag nicht gleich erreichbar ;)
    lg

  24. Kommentar Autor
    nastorseriessix
    Kommentar

    Was genau meinst du mit Kategorie Einheit ?

    Die „div id Kategorie“ soll ich da eine spezielle id nehmen ?

    …..die Unendlichen Fragen eines Laien….

  25. Kommentar Autor
    Monika
    Kommentar

    ob du diese id humpfitbumpdiichbinlaienun nennst oder kategorienanzeige oder
    kategorie ist egal

    entscheidend ist dann das diese Name auch in der style.css ist, weil du ihn hineingeschrieben hast und dort designst–aber das ist CSS ;)

    und hat so gar nichts mit WP zu tun, das Problem hättest du auch bei einer .html Seite oder Typo3 ;)

    lg

  26. Kommentar Autor
    nastorseriessix
    Kommentar

    Also wenn ich 980 durch 6 teile bekomme ich, 163, 333.. raus. Davon noch 5 weg macht dann 158 (px?)!

    Was ich nicht ganz verstehe ist, warum du „jede Liste“ geschrieben hast. Ist doch nur eine Liste, die da angezeigt wird, nur diese soll halt eben nebeneinander angezeigt werden anstatt untereinander.

  27. Kommentar Autor
    nastorseriessix
    Kommentar

    … Kommentar Bearbeiten Funktion gefunden …

    Also ich habe das jetzt so gemacht in der CSS, wobei ich dazu sagen muss das ich wirklich ein Laie bin. Heute ganz besonders, da es lokal total scheisse aussieht jetzt und die Kategorie-Liste sich komplett über den Footer legt.


    #footer_cat {

    margin: 0px auto;
    padding: 0px;

    width: 100%;
    height: 32px;
    background-color: #3B3B3B;

    border-bottom: 3px solid #D52300;
    }

    .footer_cat ul{

    float:left

    display:block padding:0

    }

    In der Index sieht es dann so aus:

    Ich bin wohl echt zu blöd dazu…

  28. Kommentar Autor
    Monika
    Kommentar

    nach dem div footer cat

    schreibe
    <br style=“clear:both;“ />

    gehts dann besser–?

  29. Kommentar Autor
    nastorseriessix
    Kommentar

    Ich schicke dir wohl am besten mal eine E-Mail dazu, da das Kommentarfeld hier teile des Code gefressen hat.

    Mit div-id’s kann ich so gar nicht arbeiten, das zerhaut mir alles total, warum weiß ich nicht, dafür bin ich zu sehr Laie…