In den letzten Woche machten mir ein seltsames Verhalten von WordPress (App und Backend) ziemliche Kopfschmerzen. Bei neu erstellten oder1 geänderten Postings waren die Links schlichtweg kaputt. Wenn ich mir die HTML-Source ansah, dann fanden sich Konstrukte wie dieses:
<a href=„https://thoschworks.de/blog/„ title=„ThoSch:Blog | Das Weblog von Thomas Schewe – Eines unter Millionen“>Link</a>
Ich war ratlos.
Meine Blogposts erstelle und bearbeite ich auf meinem iPad unter iOS. Die Texte werden größtenteils mit Editorial in Markdown erstellt. Im weiteren Ablauf erfolgt die Wandlung in HTML ebenfalls mit Editorial und das HTML wird dann in die WordPress App kopiert. Von dort wir das Posting in meine WordPress-Installation hochgeladen. Das Ändern von Postings erfolgt ebenfalls in der App unter iOS oder im Backend mit Safari unter iOS.
Zunächst hatte ich Editorial in Verdacht, irgendwie die Anführungszeichen zu verdrehen. Eine Prüfung des erzeugten HTML ergab – eigentlich erwartungsgemäß – keine Fehler.
Der Versuch die fehlerhaften Anführungszeichen in der Bearbeitungsansicht der WordPress-App oder mit Safari im Backend zu bereinigen, zeigte, dass der Fehler mit hoher Wahrscheinlichkeit dort zu suchen war: Beim Drücken der entsprechenden Taste wurde zunächst ein öffnendes Anführungszeichen („„“) und beim zweiten Druck ein schließendes Anführungszeichen („““) erzeugt.
Apple nennt das Verhalten bei Drücken der Taste intelligente Interpunktion2. An der richtigen Stelle mag das ein tolles Feature sein, aber beim Editieren von HTML-Code ist es kontraproduktiv, weil für den Webbrowser keines der beiden Zeichen ein „richtiges“ Anführungszeichen ist und er daher das HTML unzutreffend interpretiert.
Einzige Lösung war, den gesamten Artikel mit frisch generiertem HTML-Code vollständig zu überschreiben.
Als mir heute die WordPress-App beim Aktualisieren eines bereits veröffentlichten Artikels wieder alle Links zerhackte, habe ich mal nachgegraben und rumgespielt: Ist in iOS die intelligente Interpunktion aktiviert. dann werden in der WordPress-App beim Öffnen der Ansicht zum Ändern des Quellcodes alle Anführungszeichen „intelligent“ ersetzt. Ein sehr „intelligentes“ Vorgehen, das zu obigem Ergebnis führt. Bei jedem Öffnen läuft die „Intelligenz“ erneut Amok und nach dem dritten Durchlauf erhält man folgenden dadaistisch anmutenden Code3:
<a href=„„„https://thoschworks.de/blog/„"“ title=„„„ThoSch:Blog"“ |=„„"“ das=„„"“ weblog=„„"“ von=„„"“ thomas=„„"“ schewe=„„"“ –=„„"“ eines=„„"“ unter=„„"“ millionen“=„„"“>Link</a>
Aus meiner Sicht ist Verhalten der App auf eine unsaubere Programmierung zurückzuführen: Die Programmierer von 1Writer, Drafts, Editorial oder Textastic bekommen es ja auch hin, das bei ihren Apps beim Druck der entsprechenden Taste ein „dummes“ Anführungszeichen erscheint4. Und das ist auch das, was ich bei einer Ansicht zur Bearbeitung von Code erwarte.
Die einzige Möglichkeit, die ich gefunden habe, der WordPress-App das störende Verhalten abzugewöhnen, ist das Deaktivieren der intelligenten Interpunktion (Einstellungen / Allgemein / Tastatur).
Dieser Eingriff löst auch das Problem mit Safari im Backend. Ob es hier einen sauberen Weg für die Backend-Entwickler geben würde, weiß ich nicht.
- Bei näherer Betrachtung komme ich zum Ergebnis, dass beim Posten des Artikels ohne vorherigen Änderungen in der WordPress-App oder dem Backend, das Problem nicht aufgetreten sein dürfte. In den meisten Fällen muss ich aber noch ein paar Kleinigkeiten am Posting vor der Veröffentlichung ändern (oft das nicht sofort korrigierte
<—more—>
, manchmal ein HTML-Anker ). ↩ - Es handelt sich um ein neues feature von iOS 11, was erklärt, weshalb das Problem erst in letzter Zeit aufgetreten ist. ↩
- Beim Speichern der Änderungen ersetzt der Parser scheinbar ein Teil der Anführungszeichen mit
"e;
um die Sache etwas zu würzen. Die Gleichzeichen scheinen im zweiten Durchlauf aufzutauchen und führen dazu, dass die davor stehenden Worte als Parameter angesehen und auf Kleinschreibung umgesetzt werden. ↩ - Zumindest Editorial ermöglicht es über eine zusätzliche, eigene Tastenreihe auch „intelligente“ Anführungszeichen zu erzeugen, wie man an die Posting sehen kann. ↩