From c3e0ed7e03ffcee6b1428c7cd2de355b93a81529 Mon Sep 17 00:00:00 2001 From: Gary Pendergast Date: Wed, 22 Jul 2015 05:15:25 +0000 Subject: [PATCH] Shortcodes: Improve the reliablity of shortcodes inside HTML tags. Props miqrogroove. See #15694. Built from https://develop.svn.wordpress.org/trunk@33359 git-svn-id: http://core.svn.wordpress.org/trunk@33331 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/class-wp-embed.php | 6 +- wp-includes/formatting.php | 71 +++++++++ wp-includes/kses.php | 270 ++++++++++++++++++++++++++++----- wp-includes/shortcodes.php | 166 +++++++++++++++++++- wp-includes/version.php | 2 +- 5 files changed, 469 insertions(+), 46 deletions(-) diff --git a/wp-includes/class-wp-embed.php b/wp-includes/class-wp-embed.php index 6bb7217402..148c5f4bf7 100644 --- a/wp-includes/class-wp-embed.php +++ b/wp-includes/class-wp-embed.php @@ -59,7 +59,7 @@ class WP_Embed { add_shortcode( 'embed', array( $this, 'shortcode' ) ); // Do the shortcode (only the [embed] one is registered) - $content = do_shortcode( $content ); + $content = do_shortcode( $content, true ); // Put the original shortcodes back $shortcode_tags = $orig_shortcode_tags; @@ -318,6 +318,10 @@ class WP_Embed { * @return string Potentially modified $content. */ public function autoembed( $content ) { + // Strip newlines from all elements. + $content = wp_replace_in_html_tags( $content, array( "\n" => " " ) ); + + // Find URLs that are on their own line. return preg_replace_callback( '|^(\s*)(https?://[^\s"]+)(\s*)$|im', array( $this, 'autoembed_callback' ), $content ); } diff --git a/wp-includes/formatting.php b/wp-includes/formatting.php index e5ba35a377..2b55509aeb 100644 --- a/wp-includes/formatting.php +++ b/wp-includes/formatting.php @@ -504,6 +504,9 @@ function wpautop( $pee, $br = true ) { // Standardize newline characters to "\n". $pee = str_replace(array("\r\n", "\r"), "\n", $pee); + // Strip newlines from all elements. + $pee = wp_replace_in_html_tags( $pee, array( "\n" => " " ) ); + // Collapse line breaks before and after