JavaScript-Fehler nach Update auf WordPress 4.5 beheben

Ich bin diese Woche von einem Kollegen auf ein Problem aufmerksam gemacht worden, dass mit dem Update auf WordPress 4.5 auftreten kann. Im schlimmsten Fall kann hierdurch das Backend unbenutzbar werden, denn der JavaScript-Fehler kann dazu führen, dass keine weiteren Skripte im Backend ausgeführt werden.

Falsche CSS-Selektoren für Link-Anker

Was genau ist nun dieser neue Fehler und wieso tritt er plötzlich auf? Und wie könnt ihr feststellen, ob auch ihr betroffen seid? Am einfachsten geht das über die “Developement-Tools”, die so gut wie jeder Browser mitbringt. Bei den meisten öffnet ihr diese über F12. Hier seht ihr, wie der Fehler im Chrome aussieht:

wp45-js-selector-error

In der JavaScript Fehlerkonsole, den ihr im Chrome im Reiter “Console” findet, solltest ihr den Fehler sehen, um den es in diesem Beitrag gehen soll:

Uncaught Error: Syntax error, unrecognized expression: a[href*=#]:not([href=#])

Ursprung des Fehlers

Ich habe für den Demoscreenshot einen JavaScript-Code verwendet, der in sehr vielen Themes verwendet wird. Es handelt sich dabei um eine Funktion für sogenanntes “Smooth Scrolling”. Der Code stammt aus einem Beitrag von CSS-Tricks und wurde von dort von sehr vielen Theme-Entwicklern kopiert. Der Teil, der zum Fehler führt sieh in etwa wie folgt aus:

(function ($) {
   // Smooth Scroll
   $(function () {
      $('a[href*=#]:not([href=#])').click(function () {
         // Code for smooth scrolling...
      });
   });

})(jQuery);

Das Problem am oben aufgeführten Code ist des jQuery-Selektor. Hierbei werden alle Links selektiert, die auf einen Anker verlinken, abgesehen von “#-Pseudolink”. Das Problem beim Selektor sind die fehlenden Anführungsstriche für die Attribut-Werte. Bisher hat jQuery einen solchen Selektor trotzdem akzeptiert. Mit dem Update auf Version 1.12.0 wurde dieser “Fehler” behoben und solche Selektoren werden nun nicht mehr akzeptiert.

Kleiner Fehler große Auswirkung

Im dem Issue auf Github zu dieser Fehlerbehebung wird sehr heftig diskutiert, ob diese Änderung wirklich gut war. Denn es handelt sich bei dem Update um ein “Minor-Update”. Da dieses aber mit WordPress 4.5 ausgeliefert wird und somit ca. 26% aller Websites betrifft, die nun eventuell defekt sind, ist das schon ein recht großer Schaden für so einen kleinen Fehler.

Man kann sich nun darüber streiten, wer hier Schuld hat. Aber Fakt ist, dass Theme-Autoren nun dringend handeln müssen, damit ihre Themes auch weiterhin funktionieren. Einige Theme-Autoren haben das Problem schon vor längerer Zeit behoben. Andere ziehen hoffentlich bald nach. Auch in dem oben erwähnten CSS-Tricks-Artikel wurde der Code nach einem Hinweis in den Kommentaren bereits korrigiert.

Den Fehler selbst beheben

Was aber tun, wenn der Theme-Autor noch kein Update zur Verfügung gestellt hat? Am besten schreibt ihr ihn erst einmal an und informiert ihn. Vielleicht ist ihm der Fehler ja noch gar nicht bekannt. Einige Theme-Autoren sind auch sehr schnell bei der Behebung solcher Fehler und sie werden euch für den Hinweis bestimmt danken.

Falls eure WordPress Installation aber unbenutzbar ist, müsst ihr natürlich sofort etwas unternehmen. Die Lösung hierzu ist eigentlich auch ganz einfach. Ihr müsst lediglich die Attributwerte in Anführungsstriche setzen:

// Vorher
$('a[href*=#]:not([href=#])').click(function () { // ...
// Nachher
$('a[href*="#"]:not([href="#"])').click(function () { // ...

Der Fehler kann übrigens auch in diversen Plugins auftreten. Am besten durchsucht ihr auch diese nach entsprechenden Codestellen.

Fazit

Es ist immer unschön, wenn die Korrektur eines Fehlers zu so schwerwiegenden Fehlern führen kann. Es lässt sich nur leider nicht immer vermeiden. Ich hoffe aber, dass die Theme-Autoren schnell reagieren und in Zukunft beim Einsatz von fremden JavaScript-Code nicht einfach Copy&Paste verwenden, sondern sich den Code vorher auch mal ansehen 🙂

Rückblick auf das WordCamp Nürnberg 2016

Nach einer sehr kurzen Arbeitswoche ging es keine Woche nach dem WordCamp London in die Frankenmetropole Nürnberg für das erste deutsche WordCamp in diesem Jahr. Wie auch letzte Woche möchte ich euch gerne einen kleinen Bericht vom WordCamp geben.

Samstag: Der erste Konferenztag

Anders als in London, startete das WordCamp wie bisher in Deutschland mit einem Tag voller Sessions am Samstag. Wobei, eigentlich hat es schon am Freitag angefangen. Da haben sich einige Teilnehmer des WordCamps zu einem kleinen Warm-Up getroffen. Aber nun zurück zum Samstag 🙂

Weiterlesen →

Das WordCamp London 2016 setzt wieder neue Maßstäbe

Ich sitze gerade auf dem WordCamp Nürnberg und möchte die kleine Pause nutzen, um das WordCamp London, auf dem ich am vergangenen Wochenende war, Revue passieren lassen. Bereits im letzten Jahr hat mich das WordCamp begeistert und auch dieses Jahr hatte es wieder viele Details parat, an denen sich andere WordCamps orientieren sollten.

Freitag: Contributor Day

Bei den meisten WordCamp findet der Contributor Day im Anschluss an die “Konferenztage” statt. In London wird der Contributor Day allerdings vorgezogen, was unter anderem den Vorteil hat, dass alle Teilnehmer noch fit sind. Es hat auch für die Volunteers den Vorteil, dass sie sich schon einen Tag früher gemütlich registrieren können.

Weiterlesen →

Ausblick auf die nächsten Themen

Die WordCamp Saison hat begonnen! Auch wenn ich gerade auf dem WordCamp in London bin, möchte natürlich meiner Selbstverpflichtung, jede Woche einen Beitrag zu schreiben, trotzdem nachkommen. Dann ich auf dem WordCamp aber natürlich die Zeit dafür nutzen möchte neue Leute kennenzulernen und mir neue Themen anzueignen, soll es im heutigen Beitrag darum geht, worauf ihr euch in den nächsten Wochen thematisch freuen könnte.

Start in die WordCamp Saison

Wie schon zu Beginn erwähnt habe ich gerade auf dem WordCamp London. Nach einem ungeschriebenen Gesetz der Community ist ein WordCamp erst dann zu Ende, wenn man darüber geloggt hat. In der nächsten Woche erwartet euch also ein ausführlicher Bericht über die drei Tage hier vor Ort. Bereits nach dem ersten Tag habe ich wieder viele neue Ideen bekommen oder konnte bei ein paar Dingen ein besseres Verständnis erlangen.

Weiterlesen →

Zwei deutsche WordPress Podcasts in der Kurzvorstellung

Es ist wieder Sonntag und ein Artikel steht an. Ich war am Wochenende mal wieder in der Heimat und sitze gerade wieder im ICE. Die Bahnfahrer unter euch werden wissen, dass man hier eigentlich nur lokal arbeiten kann, da die Internetverbindung schlecht bis nicht existent ist.

Das heutige Thema dreht sich daher mal um etwas, dass ich ganz gerne auf Bahnfahrten mache. Auch bei den täglichen mit der S-Bahn ins Büro. Und das ist neben dem Lesen von (e)Books das Sehen oder hören von Podcasts. Ich hatte ja einem Adventskalenderartikel schon den Rechtsbelehrung-Podcast erwähnt, den ich sehr gerne höre. Am Freitag habe ich dann endlich auch mal die zwei neuen deutschen Podcasts zum Thema WordPress abonniert, die ich euch hier kurz präsentieren möchte.

Weiterlesen →