WordPress wpautop() Bug gefixt

Ich hatte ja das Problem, dass mit PHPexec erzeugter Code immer von wpautop() immer verhackstückt wurde.

Irgendwie hatte ich jetzt doch noch die richtige Idee. Ich führe einfach ein neues HTML-Element ein…
Die Lösung basiert auf ein paar kleinen Änderungen des Moduls wp-includes/formatting.php.

Folgende Änderungen:

### Parameter $p_newline hinzugefügt
function clean_pre($text,$p_newline = 1) {
	$text = str_replace('<br />', '', $text);
	if ($p_newline)
		$text = str_replace('<p>', "n", $text);
	else
		$text = str_replace('<p>', "", $text);
	$text = str_replace('</p>', '', $text);
	return $text;
}
function preserveP($text) {
	$text = str_replace(array('<br />','<p>','</p>'),
			array('<WPpreservebr />','<WPpreservep>','</WPpreservep>'),
			$text);
	return $text;
}
function revertP($text) {
	$text = str_replace(array('<WPpreservebr />','<WPpreservep>','</WPpreservep>'),
			array('<br />','<p>','</p>'),
			$text);
	return $text;
}
 
### Überprüfung auf <nowpautop> hinzugefügt
function wpautop($pee, $br = 1) {
	if (strpos($pee, '<nowpautop>') !== false) {
		$pee = preg_replace('!<nowpautop>(.*?)</nowpautop>!ise', "preserveP('$0')", $pee);
	}
 
	/*..... der Übersichtlichkeit zuliebe gekürtzt ....*/
 
	if (strpos($pee, '<nowpautop>') !== false) {
		$pee = preg_replace('!<nowpautop>(.*?)</nowpautop>!ise',
					" stripslashes(revertP(stripslashes(clean_pre('$1',0)))) ", $pee);
	}
 
    $pee = preg_replace( "|n</p>$|", '</p>', $pee );
 
    return $pee;
}

Damit brauche ich den betreffenden Code nur mit <nowpautop>…</nowpautop> zu umschließen und das Problem ist gelöst.
Eventuell hat dies noch andere Auswirkungen, aber das muss sich erst im Praxisbetrieb zeigen.

3 thoughts on “WordPress wpautop() Bug gefixt

  1. Nachdem Du ja nun Deinen Patch getestet hast, hat er noch andere Auswirkungen? Wie sieht’s nach einem Update von WP aus? Dann muss neu gepatcht werden?

    In meinem Blog scheitert PHP-exec daran, dass WP aus „

  2. Tja, gefunden hab ich keine Probleme weiter.
    Updates sind tatsächlich etwas unhandlich, der Patch muss jedesmal neu reingebastelt werden. Etwas nervend ist das schon, aber da ich die neueren 2.3er Versionen eh nicht mit mache, hab ich damit erstmal keine Probleme mehr 😉

Comments are closed.