WordPress Kategorie-Baum Chaos in “Artikel bearbeiten”
codestyling | 07. Dezember 2008 | 18:01
Wenn man seine Artikel kategorisiert, dann stellt man irgendwann fest, das etwas nicht stimmt mit der Baumanzeige der Kategorien. Wenn WordPress alle Kategorien am Artikel auflistet, erwarte ich eigentlich, dass die Baumstruktur erhalten bleibt.
Leider sieht das WordPress etwas anders und greift in einer Weise ein, die den Baum zerstört. Die Sortierung der bereits verwendeten Kategorien an den Anfang zerreisst buchstäblich die Baumansicht.
Und wieder mal hab ich mich auf die Suche begeben, welche Stelle des Wordpress Codes denn dafür zuständig ist. Ich bin schließlich in der Datei template.php und der Funktion wp_category_checklist fündig geworden. Dort werden mittels einer Vorfilterung die Kategorien rausgefischt, die dem Artikel bereits zugeordnet sind. Es werden zwei Teilmengen gebildet:
- Kategorien, die der Artikel bereits besitzt
- Kategorien, die dem Artikel noch nicht zugeordnet sind
Danach werden beide Mengen jeweils in einer Baumansicht ausgegeben. Da bei dieser “Zerstückelung” der Kategorien aber die Baumstruktur zerrissen wird, kann nur ein Teil als Baum dargestellt werden, der Rest landet linear am Ende der Anzeige. Das oben gezeigte Bild verdeutlicht das Problem in einfacher Weise.
Die einzige Lösung, die ich bisher finden konnte, ist eine Modifikation der Stelle im WordPress Core. Deshalb hab ich die Datei: wp-admin/includes/template.php in der Funktion wp_category_checklist modifiziert und den Vorfilter rausgenommen :

Der rot markiert Bereich stellt den Vorfilter dar, den ich auskommentiert aber in der Datei erstmal belassen habe. Nun hat mich aber auch interessiert, ob das nur in WordPress 2.7 so ist oder ob auch andere Versionen das ebenfalls so codiert haben. Nach Durchsicht aller WordPress Versionen bis runter zur Version 2.5.1 ist dieser Code unverändert so zu finden und kann in jeder Version ab 2.5.1 auf die gleiche Weise geändert werden.
Wie man am Ergebnis sehen kann, bekommt man dann wieder eine logische Baumansicht angezeigt, die der tatsächlichen Anordnung der Kategorien als Baum entspricht. Dieser Patch ist erst einmal eine einfache Lösung für dieses Problem. Jedoch sollte sich das WP Core Team mal ersthaft Gedanken machen, wie das strukturell besser zu lösen ist.
Deshalb werde ich dieses Problem wieder als Bug im WordPress Trac registrieren und hoffe, dass es für spätere Versionen mit berücksichtigt werden kann (für WP 2.7 dürfte es zu spät sein).
Dieses Problem wurde unter Ticket #8521 im WordPress Trac eingereicht.






Monika
07.12.2008 | 20:14Ich steh kurz am Schlauch:
ich habe es bis dato sehr geschätzt, dass die Kategorie in der ich einen Artikel abgespeichert habe ganz oben zu finden war, habe ich doch auch Blogs wo an die 56 Kategorien sind, da wird das Scrollen zur verfluchten Lebensaufgabe
und ich speichere niemals in der Hautpkategorie und Unterkategorie ab-wieso sollten dann beide angehakt sein..
daher frage ich: bei Deinem Code:rutscht die Kat in der der Artikel abgespeichert wurde nicht mehr nach oben?
und hakt es mir dann auch die Oberkat automatisch an?
(eine naive Nachfragerin)
wenn beides ja -wäre ich sehr traurig
lg
Antworten »
codestyling
07.12.2008 | 20:30Da ich keine all umfassende Lösung hier programmiert hab, sondern nur darauf hinaus wollte, das eine Baumanzeige auch gefälligst eine Baumanzeige sein soll, löst dies deine Anforderungen in der Tat nicht.
Deswegen hab ich ja geschrieben, dass sich WP was einfallen lassen sollte, denn die einen wollen alles Benutzte oben stehen haben (dann macht aber ein Baum kein Sinn und eine lineare Liste reicht) und die anderen einen korrekten Baum (dann sind die benutzten Kategorien im Baum korrekt einsortiert aber eben ggf. weiter unten).
Eine Umschaltung zwischen Listenansicht und Baumansicht wäre dann ein Kompromiss, den man machen könnte.
Antworten »
Monika
07.12.2008 | 22:04wieso? ich mag kein entweder oder.
ich schreibe einen neuen Artikel und nutze den Baum zum Suchen der richtigen Kategorie.
Editier ich den Artikel ist es ganz toll, dass die Kat oben steht.
Außerdem speicher ich ja keinen Artikel in der Hauptkategorie UND Unterkategorie, weil dies ja die Unterkategorie sinnlos macht, wenn ich alles in die obere Schublade packe.
lg
Antworten »
codestyling
07.12.2008 | 22:26Das mag sein, aber man kann ja Kategorien so verwenden, wie andere Tags benutzen. Also kann ein Artikel in mehreren Kategorien gleichzeitig sein. Dann hätte ich schon gern den Überblick behalten, welche Kategorien unter welchen Eltern stehen, denn es dürfen bei mir z.B. nur Kategorien hinzugefügt werden, die von den gleichen Eltern abstammen
Das sehe ich bei dem Misch-Masch dann nicht mehr.
Antworten »
Monika
08.12.2008 | 00:54ja also ich versuch eine Zusammenfassung : ist ein Artikel nur in einer Unterkat, magst du dennoch sehen wie die “Elternkat” heißt,
wenn geht auch noch am selben Platz wie vorher und als Baumansicht
ich weiß, dass ich zumindest nicht mag, dass mir WP automatisch einen Artikel einer Unterkat auch in die Elternkat packt.
ob es mir die Elternkat auch anzeigt oder nicht ist mir einfach egal
-
würd also WP sowohl die Elternkat wie die Kindkategorien beim Editieren als Baumansicht dann nach oben holen ==> wäre dies auch für dich passend?
ich vermut aber das wäre zuviel Aufwand …
geht da kein Plugin?
lg
Antworten »
codestyling
08.12.2008 | 00:59Das Problem ist ja gerade, das ein Kind dem Vater (Mutter ?) zugeordnet angezeigt wird, wenn es markiert ist. Alle weiteren Kinder stehen aber am Ende der Ansicht, was im Sinne eines Baumes falsch ist.
Antworten »
JUICEDaniel
07.04.2009 | 19:09Hab ein seltsames Problem, was leider nicht ganz dazu passt. Aber ich weiß nicht, wo ich sonst auf die Schnelle nachfragen sollte (ohne mich in Forum #5234 anzumelden).
Ich habe eine neue Subkategorie “Sprache” angelegt mit der URL “sprache”. Jetzt hat der mir automatisch als URL ein “sprache-more” daraus gemacht. Wenn ich es änder und das “-more” entferne, macht WP2.7.1 automatisch ein “sprache-more2″ daraus. Ändere ich es wieder (egal welche URL!), macht WP ein “sprache-more” daraus. Supernervig!
Vorher ging es auch wunderbar, jetzt hab ich das Problem auch, wenn ich eine Kategorie (testweise) “Deutsch” anlege, die URL heißt - schwupp - “deutsch-more”.
-> Erklärung: Die Hauptkategorie heißt “MORE” (URL: “more”).
Siehe:
http://www.juiced.de/blog/
bzw.
http://www.juiced.de/blog/category/more/
bzw.
http://www.juiced.de/blog/category/more/sprache-more/
Irgendeine Idee, woran das liegen könnte? (Total nervig, sowas… alle andere Unterkategorien funzten auch problemlos…)
Antworten »
codestyling
27.04.2009 | 11:34Sorry für die lange Verzögerung. Hatte ein paar Probleme zu lösen
Das beschriebene Verhalten ist mir neu. Es wäre hilfreich, wenn du mir eine Liste deiner Plugins und deine aktuelle Permalink Einstellung zukommen lassen könntest. Dann wäre ich auch in der Lage, das genauer zu untersuchen.
Antworten »