Formatting: Add an extra line break before block elements in `wpautop()`.

`wpautop()` considers double line breaks to be the separator between block level HTML elements. By adding two line breaks before a block element, this allows us to process the text before a block element correctly.

Fixes #4857.



git-svn-id: https://develop.svn.wordpress.org/trunk@38592 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Gary Pendergast 2016-09-12 07:05:28 +00:00
parent 7511fe88cc
commit 61a95da031
2 changed files with 11 additions and 1 deletions

View File

@ -469,7 +469,7 @@ function wpautop( $pee, $br = true ) {
$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)';
// Add a single line break above block-level opening tags.
$pee = preg_replace('!(<' . $allblocks . '[\s/>])!', "\n$1", $pee);
$pee = preg_replace('!(<' . $allblocks . '[\s/>])!', "\n\n$1", $pee);
// Add a double line break below block-level closing tags.
$pee = preg_replace('!(</' . $allblocks . '>)!', "$1\n\n", $pee);

View File

@ -524,4 +524,14 @@ line 2<br/>
$this->assertEquals( $expected, trim( wpautop( $content ) ) );
}
/**
* @ticket 4857
*/
function test_that_text_before_blocks_is_peed() {
$content = 'a<div>b</div>';
$expected = "<p>a</p>\n<div>b</div>";
$this->assertEquals( $expected, trim( wpautop( $content ) ) );
}
}