diff --git a/src/wp-includes/formatting.php b/src/wp-includes/formatting.php index fc3770cfaf..2cc27ad069 100644 --- a/src/wp-includes/formatting.php +++ b/src/wp-includes/formatting.php @@ -480,7 +480,7 @@ function wpautop( $text, $br = true ) { // Change multiple
's into two line breaks, which will turn into paragraphs. $text = preg_replace( '|\s*|', "\n\n", $text ); - $allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary)'; + $allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|form|map|area|blockquote|address|style|p|h[1-6]|hr|fieldset|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary)'; // Add a double line break above block-level opening tags. $text = preg_replace( '!(<' . $allblocks . '[\s/>])!', "\n\n$1", $text ); @@ -568,7 +568,7 @@ function wpautop( $text, $br = true ) { // Optionally insert line breaks. if ( $br ) { // Replace newlines that shouldn't be touched with a placeholder. - $text = preg_replace_callback( '/<(script|style|svg).*?<\/\\1>/s', '_autop_newline_preservation_helper', $text ); + $text = preg_replace_callback( '/<(script|style|svg|math).*?<\/\\1>/s', '_autop_newline_preservation_helper', $text ); // Normalize
$text = str_replace( array( '
', '
' ), '
', $text ); diff --git a/tests/phpunit/tests/formatting/wpAutop.php b/tests/phpunit/tests/formatting/wpAutop.php index 315a0c9794..b9592155fe 100644 --- a/tests/phpunit/tests/formatting/wpAutop.php +++ b/tests/phpunit/tests/formatting/wpAutop.php @@ -104,6 +104,63 @@ PS. Not yet subscribed for update notifications? $str

", trim( wpautop( $str ) ) ); } + /** + * wpautop() Should add

around inline "" elements. + * + * @ticket 13340 + */ + public function test_wrap_inline_math_elements() { + $str = 'a2+b2=c2'; + + $this->assertSame( "

$str

", trim( wpautop( $str ) ) ); + } + + /** + * wpautop() Should not add
inside block "" elements. + * + * @ticket 13340 + */ + public function test_skip_block_math_elements() { + $str = ' + + + + (a+b)2 + + + = + + + c2 + +4 + (12ab) + + + + + a2 + +2ab+ + b2 + + + = + + + c2 + +2ab + + + + a2+b2 + = + c2 + + +'; + + $this->assertSame( "

$str

", trim( wpautop( $str ) ) ); + } + /** * wpautop() Should not add

and
around and * @@ -308,7 +365,6 @@ Paragraph two.'; 'map', 'area', 'address', - 'math', 'style', 'p', 'h1',