manski's blog

Bug in WordPress

Bin heute auf einen doofen Bug in WordPress (meiner Blog-Software) gestoßen. Dieser Fehler führt dazu, dass unter bestimmten Umständen alle folgenden Blog-Einträge komplett fett dargestellt werden.

Für die Leute, die HTML bzw. XML lesen können: Es liegt daran, dass der WYSIWYG-Editor von WordPress manchmal folgende Tags in den Eintrag einbaut (Weiß eigentlich irgendwer, wie man in sein Posting bitte einen HTML-Code-Block einfügt?):

Fehlerhafte Tags

Diese haben zur Folge, dass aller nachfolgende Text (auch der der anderen Beiträge) fett bzw. kursiv dargestellt wird. Und das sieht natürlich hässlich aus. Nach einiger Suche bin ich dann endlich auf die Lösung gestoßen. Dieser Fehler ist bei WordPress bereits bekannt und wird laut der Bug-Seite in der Version 2.1 gefixt sein.

Es wird dort allerdings auch einen Workaround genannt, so dass mein Blog jetzt endlich wieder ordnungsgemäß seine Arbeit verrichtet. Für diesen Workaround muss unter “Optionen” –> “Schreiben” die Option “WordPress soll invalide eingearbeitetetes XHTML automatisch korrigieren.” aktiviert sein. Dann muss in die Methode balanceTags() (in der Datei wp-includes/functions-formatting.php) folgender Code (in WP-Version 2.0.4 ist das Zeile 462):

// If self-closing or '', don't do anything.
if((substr($regex[2],-1) == '/') || ($tag == '')) {
}

durch folgende Code ersetzt werden:

if (substr($regex[2],-1) == '/') {
  //if not one of the self-closing tags, remove the '/'
  if (   (substr($regex[2], 0, 2) != ('br' || 'hr'))
      || (substr($regex[2], 0, 3) != ('img'))
      || (substr($regex[2], 0, 5) != ('input'))) {
    $regex[2] = substr($regex[2], 0, -1);
  }
}

Damit werden solche Tags entfernt. Die Änderung wirkt sich allerdings nur beim Speichern von Einträgen aus. D.h. der problematische Eintrag muss einfach noch einmal editiert und wieder abgespeichert werden.

No comments yet

Leave a Reply

Your email address will not be published. Required fields are marked *