Mehr oder weniger zufällig haben wir gestern nach einem Update auf Version 3.0.4 einen “Bug” im WordPress-Backend gefunden, durch den kein Umschalten des WYSIWYG-Editors zwischen “Visuell” und “HTML” mehr möglich war. Da die Eingrenzung des Fehlers doch etwas gedauert hat, poste ich das hier, für den Fall, dass es sonst noch jemandem weiterhilft.
Interessant daran: Scheinbar hatte sich WordPress per Cookie / Einstellung zuvor gemerkt, welchen Modus ein Benutzer beim Schreiben / Editieren zuletzt aktiviert hatte, denn entdeckt wurde der Fehler dadurch, dass bei einem Benutzer scheinbar der Editor nicht mehr funktionierte, bei anderen alledings erschien der Editor (TinyMCE) problemlos. Genau lässt sich auch nicht sagen, seit wann das Problem wirklich existiert, vermutlich schon seit einer der früheren 3.0.X-Versionen.
Das Problem
Die Identifikation des genauen Symptoms war per Firefox-Fehlerkonsole relativ schnell erledigt. jQuery wurde scheinbar nicht korrekt geladen, wodurch darauf aufbauende Javascripts Fehler wie z.B. “jquery is not defined” oder “edButtons is undefined” auswurfen.
[singlepic id=1 w=614 h=420]
Die Herkunft des Problems lag allerdings etwas tiefer….
Vorgeschlagene Lösungen
Erste Amtshandlung nach Identifikation der Fehlerquelle war (wie vermutlich bei den meisten) Googlen nach der Meldung aus der Fehlerkonsole. Resultat: http://lmgtfy.com/?q=wordpress+jquery+is+not+defined.
Unter den Support-Forum-Posts der Google-Ergebnisse wurde das Deaktivieren von Plugins zur Eingrenzung der Ursache (z.B. http://wordpress.org/support/topic/javascript-error-jquery-is-not-defined) oder noch häufiger ein erneuter Upload der entsprechenden Javascript-Dateien per FTP-Binärmodus (z.B. http://wordpress.org/support/topic/jquery-is-not-defined) vorgeschlagen.
Lösen ließ sich das Problem in unserem Fall damit allerdings nicht, denn die JS-Dateien kommen bei uns über ein Shell-Update-Skript direkt aus dem WordPress-SVN und auch nachdem alle Plugins deaktiviert waren, bestand der Fehler weiter, obwohl wir z.B. auch das (wie ich persönlich finde) sehr gute, im ersten Link erwähnte Admin Dropdown Menü verwenden.
Die tatsächliche Lösung
Bei der weiteren Suche bin ich dann schnell an der Javascript-Quelle hängen geblieben, die – wie man im Screenshot oben gut erkennen kann – das PHP-Skript “load-scripts.php” nutzt, um verschiedene Einzeldateien zur Verkürzung der Ladezeit zu konkatenieren. Dieser Mechnismus hat wohl auch schon in anderen Konstellationen Fehler verursacht, siehe z.B. http://wordpress.org/support/topic/wp-28-jquery-error. Durch einfaches Abschalten der Skriptverkettung sowie (sicherheitshalber) auch der gleichzeitig von WP durchgeführten Kompression mittels gzip, konnte der Fehler schließlich relativ einfach beseitigt werden. Hierzu müssen lediglich die beiden folgenden Zeilen in die Datei wp-config.php eingefügt werden, die sich im Root-Verzeichnis der WordPress-Installation befindet:
define('CONCATENATE_SCRIPTS', false); define('COMPRESS_SCRIPTS', false);
Danke! Danke! Danke!
Danke für den Tip. Der hat geholfen.
Ich hatte das gleiche Problem, aber den Fehler zunächst im nicht geladenen TinyMCE vermutet. Daraufhin schon alles mögliche durchprobiert.
Verstehen tue ich es trotzdem noch nicht. Hatte doch der Editor bis vor kurzem noch funktioniert. Man lernt auch nie aus.
Wenn ich von meinem Handy eine MMS (mit Bild) an obige E-Mail-Adresse
sende, kommt die MMS zwar an, jedoch weder Betreff noch Bild. Ich habe
die Mail-Seite abgespeichert und stand unter Windows Script Host der
Fehler jQuery ist undefiniert, Code 800A1391. Was kann ich da tun, um
die Anlage zu empfangen? Bin absoluter Laie.
Vielen Dank im voraus.
In dem Fall handelt es sich relativ sicher um ein Problem, das nichts mit dem der oben beschriebenen Blogging- bzw. Content Management Lösung WordPress zu tun hat. Im Zweifel tippe ich auf einen Javascript-Fehler im verwendeten Webmail-Interface (sofern dieses auch jQuery verwendet). Die hier beschriebene Lösung wird dabei auf jeden Fall leider nicht weiterhelfen, auch wenn der Fehlercode identisch ist.
Vielen Dank für den Tipp, die erste Lösung, die wirklich etwas gebracht hat, sie funktioniert bei mir aber nur begrenzt. Ich kann genau einmal von HTML auf Visuell umschalten, ein zweites mal klappt es nicht mehr. Was für mich eigentlich wirklich unangenehm ist, ist der Umstand, dass viele Dashbord-Buttons nicht funktionieren – z.B. Bilder einfügen / Kategorien hinzufügen. Auch die “Optionen einblenden” oder “Hilfe” Buttons reagieren genauso wenig, außerdem kann ich die Widgets nicht mit der Maus in die Sidebar ziehen. An den Plugins liegt es nicht, die habe ich versuchsweise bereits deaktiviert, das Problem tritt auch bei allen Themes auf. Allerdings nur unter WP 3.2.1, für eine weitere Website nutze ich WP 2.6.7 und da läuft alles ganz normal. Hätten Sie auch dazu eine Idee, woran es liegen könnte?
Klingt für mich ein Bisschen so, als würde jQuery überhaupt nicht oder zumindest immer noch nicht vollständig geladen. Gibt es denn noch irgendwelche (sonstigen) Fehler in der Firefox-Fehlerkonsole? Vielleicht existiert ja noch ein defektes Skript im Browser-Cache, so dass es sich lohnen könnte, diesen einmal komplett zu leeren.
Falls auch das nicht hilft, könnte unter Umständen auch ein Austausch der WP-Core-Dateien analog zu http://codex.wordpress.org/Updating_WordPress weiterhelfen. Eventuell ist ja tatsächlich eine der enthaltenen Javascript-Libraries beschädigt.
Tut mir leid, dass ich das nicht schon im ersten Posting erwähnt habe: Ich denke, dass ich das Problem etwas eingrenzen kann: Anscheinend betrifft es nur die Buttons, die auf eine URL verweisen, die ein #-Symbol beinhalten.
Danke vielmals für die Hinweise, so weit geht eigentlich sonst niemand ins Detail! Jetzt weiß ich, wo ich suchen muss. Nochmals Danke für die Hilfe.
Vielen Dank für den Tip.. bin fast wahnsinnig geworden bei der Suche nach diesem SCH*** Fehler 🙁
Muss das nicht den WP-Entwicklern mitgeteilt werden, dass diese Optionen in der wp-config ZWINGEND notwendig sind? Sollte das automatische Update diese Optionen nicht einfügen?
Ohne das ausführlicher getestet zu haben, scheint das Problem auf jeden Fall nicht pauschal nach einem Update aufzutreten, sondern ist irgendwie browser- bzw. konfigurationsabhängig. In unserem Fall hatten z.B. nur Einzelpersonen mit bestimmten Firefox-Versionen den jQuery-Fehler. Vielleicht liegt es auch an den jeweiligen WordPress-Profilen bzw. Logins. Hier speichert WordPress ja auch einige zusätzliche Optionen …
Im Prinzip ist die in neueren WordPress-Versionen eingeführte Konkatenation und Komprimierung der JS- und CSS-Dateien ja auch absolut sinnvoll und wünschenswert, d.h. sofern keine Fehlermeldungen auftauchen, sollte die Option in meinen Augen auch aktiviert bleiben. Vielleicht löst sich das Problem ja auch mit einem neueren Update wieder in Luft auf. Bisher zumindest wurden ja die meisten Bugs in WordPress im Vergleich zu anderen CMS relativ zügig beseitigt und bis dahin hilft ja zumindest obiger Workaround.
Danke für den Hinweis auf deinen ausführlichen Artikel. Sicherlich für den ein oder anderen, der auf diesem Kanal über die Problematik stolpert, hilfreich!
Super vielen Dank. Hat einwandfrei funktioniert 🙂