WordPress 2.8 und das jQuery Update
codestyling | 14. Juni 2009 | 03:05
Wenn man gerade eine sehr stabil laufende Version 2.7 von WordPress hat, sich auch an die Maxime hält, nur Scripte zu benutzen, die im Standard Lieferumfang enthalten sind, dann erlebt man mit dem Update auf WordPress 2.8 eine Überraschung.
Einige der auf den Basis-Bibliotheken beruhenden Implementierungen versagen plötzlich ihren Dienst. Also wieder ein Fall für eine tiefergehende Analyse, womit man es nun wieder zu tun hat. Ich sollte eine Serie daraus machen: “Und was passiert diesesmal ?” …
Viele Benutzer kennen zumindest eine Komponente von jQuery, weil sie in sehr vielen Blogs zu finden ist: jQuery UI Tabs. Entweder wird sie als Featured Content Umschalter oder in der Sidebar als Gruppierung von Inhalten verwendet.
In der WordPress Version 2.7(.1) hat man standardmäßig jQuery selbst in Version 1.2.6 und jQuery UI in Version 1.5.2 zur Verfügung. Dies hat sich jedoch mit WordPress 2.8 geändert, jetzt bekommt man jQuery 1.3.2 und jQuery UI 1.7.1 bereitgestellt. Da die Tabs Komponente von jQuery UI abhängt, ist diese natürlich auch neu. Leider ist aber zwischen diesen Versionen ein großer Sprung im jQuery Sektor erfolgt, sodass Scripte, die mit der älteren Version anstandslos liefen nur nicht mehr funktionieren, weil sich die Logik und Struktur der Manipulationen geändert hat, die Komponenten durchführen.
jQuery Tabs Markup laut Beschreibung
Wie man der Dokumentation entnehmen kann, sollte ein Grundgerüst für Tabs in etwa so aussehen:
| PHP | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <div id="tabs"> <ul> <li><a href="#tabs-1">Nunc tincidunt</a></li> <li><a href="#tabs-2">Proin dolor</a></li> <li><a href="#tabs-3">Aenean lacinia</a></li> </ul> <div id="tabs-1"> <p>Tab 1 content</p> </div> <div id="tabs-2"> <p>Tab 2 content</p> </div> <div id="tabs-3"> <p>Tab 3 content</p> </div> </div> |
| timing: 0.038s | |
Die grundlegende Struktierung ist in beiden Versionen gleich, was genau der Unterschied ist, werde ich nun gegenüberstellen:
jQuery UI 1.5.2 (WP 2.7)
In dieser Version wird die ID des HTML Elements des Tabs selbst nicht am DIV Container erwartet sondern am UL Element selbst. Alles geht vom UL Element aus, der äußere DIV hat keine Bedeutung hier. Deshalb muss man, wenn das oben gezeigte Markup verwendet werden soll, diesen Selektor benutzen:
jQuery UI 1.7.1 (WP 2.8)
Mit der neuen UI Erweiterung kümmert sich jQuery selbst um die Suche des ersten UL Elements innerhalb des DIV Elements und erwartet die ID des Tabs demzufolge auch am DIV selbst. Der dazu nötige Javascript Aufruf muss dem natürlich Rechnung tragen und ebenfalls den korrekten Selektor benutzen:






Kretzschmar
14.06.2009 | 19:28Dein Beitrag zeigt einmal mehr, worauf die WordPress-Entwickler in Zukunft verstärkt achten sollten: Vorsicht bei der Aktualisierung der mitgelieferten Skripte etc. walten zu lassen.
Im Fall von Wordpress 2.8 ist die Abwärtskompatibilität meiner Meinung nach allerdings zu Recht außer Acht gelassen worden, da sie viele Änderungen substanzieller Art (z.B. die Multi-Widgets) bietet und viele Themes und Plugins schon deshalb nicht um jeden Preis abwärtskompatibel gehalten werden.
Antworten »
Norman
14.06.2009 | 21:49im zuge des fortschritts müssen halt opfer gebracht werden
eigentlich ist es eher verwunderlich, warum sich in elementaren sachen wie funktionaufrufen bei jQuery soviel ändert.. wordpress trifft da weniger die “schuld” finde ich..
Antworten »
codestyling
14.06.2009 | 21:58Schuldzuweisungen sind keine gute Sache, um voran zu kommen. Nach meinem Verständnis müssen gravierende Änderungen zeitig und öffentlich kommuniziert werden, damit man damit umgehen kann. Jeder Programmierer, der ein Theme und/oder Plugin wartet und weiterentwickelt, wird umgehend auf solche Informationen reagieren, nur bekommen muß er sie und nicht erst nach dem Update spüren
Antworten »
Kretzschmar
16.06.2009 | 21:06Ich hoffe, dass ich nicht den Eindruck erweckt habe, Schuldzuweisungen auszusprechen. Ich finde das Engagement der WordPress-Entwickler und der Community fantastisch. Darüber hinaus ist es grundsätzlich verständlich, dass sich in eine komplexe Software wie WordPress immer wieder auch Fehler einschleichen.
Glücklicherweise findet man immer wieder nette Leute, die einem in schwierigen Situationen helfen. Und Heiko ist sicherlich ein besonders netter. Danke .
Antworten »
Wolf Larsen
12.07.2009 | 23:49Das bekannte K2-Theme hat ein paar Features mit jquery 1.2.6 eingebunden. Ich nehme an, die versagen alle, ich nutze aber nur die Live-Suche. Auf dem K2-Blog tut sich nichts, das Forum ist abgeschaltet und die Google-Gruppe ist voller Porno-Spam. Da ist wohl keine Abhilfe zu erwarten. Wie könnte man den jquery-Konflikt angehen? Danke!
Antworten »
codestyling
13.07.2009 | 11:24Ich werde mal einen Blick reinwerfen. Kann aber etwas dauern, denn ich hab eine Menge Projekte derzeit offen, die erstmal eine höhere Priorität haben. Ich werde mich per Mail melden, wenn ich rausgefunden hab, was genau die Probleme verursacht.
Antworten »