Wordpress: Seiten und Kategorien in einer Liste darstellen
Posted by Konrad Mohrfeldt on November 27, 2009 · 6 Comments
Es gibt so ein, zwei Dinge in Wordpress, die vermisse ich etwas und dazu gehört eindeutig die Möglichkeit, die Trennung von Seiten und Kategorien aufzuheben und sie gemeinsam darzustellen. Es ist mir völlig Latte ob die Sache im Backend bestehen bleibt (ist ja auch nicht ganz unpraktisch), allerdings ist es dem User einer Seite auch völlig Latte ob der nächste Link auf eine Seite oder eine Kategorie zeigt. Fakt ist: Beides ist Content.
Hier auf dieser Seite stört mich das nicht so sehr und ich gehe auch davon aus, dass mein Publikum die Trennung von Seiten und Kategorien gewöhnt ist. Für andere Seiten an denen ich arbeite ist das allerdings problematisch. Für KOP-Berlin habe ich schon mal in 5 Minuten etwas runtergerackert, allerdings ist mir das damals bei mehr als 2 Ebenen um die Ohren geflogen (mehr hatte ich da auch nicht gebraucht) und von angenehmer Einbindung kann auch keine Rede sein. Die Funktionsaufrufe mussten direkt ins Template gehackt werden, die Datei mit den Funktionen war Bestandteil des Themes. Alles irgendwie dirty.
Auf Anraten des Herrn Nachbarn habe ich diese kleine Softwarelösung jetzt einmal komplett überarbeitet und zu einem Widget umgebaut.
Das Widget unterstützt bisher folgendes:
- Kategorien und Seiten in einer Liste darstellen
- Ausgabe sortieren
- get_pages und get_categories Argumente
Einschränkungen:
- Keine Tiefe definierbar (kommt – und lässt sich über Excludes „notfallbehelfen“ *g*)
- Keine gesonderten Formatierungen
- Sortierung nur auf erster Ebene
Einschränkung 1 dürfte relativ schnell erledigt sein und wird auch nachgereicht. Einschränkung 2 werde ich nach und nach (von Nachfrage abhängig) fixen. Einschränkung 3 – keine Lust, brauch ich nicht, keine Ahnung, ob ich da fleißig bin.
Kleines Anwendungsbeispiel:
Die Konfiguration ist noch nicht simpel, aber sie ist machbar mit ein wenig Denke. Wer will kann gerne eine entsprechende Oberfläche bauen, ich habe dafür keine Zeit ;).Trotzdem eine kurze Erläuterung:
In Order (bzw. Reihenfolge) werden die IDs der Kategorien und Seiten in der Reihenfolge angegeben, wie sie letztendlich auf der Seite erscheinen sollen. An jede Page ID wird zusätzlich ein kleines „p“ rangehängt. Jedes Element, dass nicht in dieser Liste erscheint, wird später einfach hinten dran gehängt.
Hier im Beispiel werden erst die Kategorien 5 und 14 angezeigt, danach kommen die Seiten 8 und 53, dann die Kategorie 15, die Seite 55 und schlussendlich die Kategorie 17. Also:
5,14,8p,53p,15,55p,17
In den Category Args kann man die Argumente übergeben, die man auch der Wordpress Funktion get_categories übergeben könnte.
Im Beispiel werden die Kategorien 1 und 3 nicht mit anzeigt und außerdem werden auch leere Kategorien gelistet.
exclude=1,3&hide_empty=0&title_li=
Für die Page Args gilt genau das gleiche.
Das Beispiel schließt die Seiten 74 und 3 aus der Darstellung aus.
exclude=74,3&title_li=
Wer das Plugin installieren will, schiebt es in den Plugin Ordner, aktiviert es in Wordpress, geht in die Widgetansicht und zieht das Widget in eine/die Sidebar.
Das Widget selbst gibts natürlich für lau, der Code ist unter der GPLv3 lizenziert. Ich lade gerne jeden ein mir Fehler um die Ohren zu hauen oder Verbesserungen vorzunehmen. Ich setze sehr auf die Eitelkeit von Programmierern und ihre sture Begeisterung fürs „ich-kanns-besser“ ;o).
Sobald ich Zeit habe, landet das Plugin dann auch im offiziellen WP Plugin Verzeichnis und wird dann wahrscheinlich auch so allerlei Updatekram und son Käse bekommen. (Noch) Kein Plan wie das geht.
Also dann. Viel Spaß damit und wer Probleme hat, darf sich melden ;).
Hier der Download: Klick!
Update gibt’s hier.
Filed under Meine Projekte, Programmierung · Tagged with PageCat List, Plugin, Widget, Wordpress