diff --git a/src/wp-includes/shortcodes.php b/src/wp-includes/shortcodes.php index 4c9355f6b6..d16227ea3c 100644 --- a/src/wp-includes/shortcodes.php +++ b/src/wp-includes/shortcodes.php @@ -359,6 +359,11 @@ function do_shortcodes_in_html_tags( $content, $ignore_html ) { $attributes = wp_kses_attr_parse( $element ); if ( false === $attributes ) { + // Some plugins are doing things like [name] <[email]>. + if ( 1 === preg_match( '%^<\s*\[\[?[^\[\]]+\]%', $element ) ) { + $element = preg_replace_callback( "/$pattern/s", 'do_shortcode_tag', $element ); + } + // Looks like we found some crazy unfiltered HTML. Skipping it for sanity. $element = strtr( $element, $trans ); continue; diff --git a/tests/phpunit/tests/shortcode.php b/tests/phpunit/tests/shortcode.php index 0f251d4933..44abc2754f 100644 --- a/tests/phpunit/tests/shortcode.php +++ b/tests/phpunit/tests/shortcode.php @@ -434,6 +434,14 @@ EOF; '
', '
', ), + array( + '<[[gallery]]>', + '<[gallery]>', + ), + array( + '
', + '
', + ), array( '[gallery]
Hello
[/gallery]', '', @@ -472,6 +480,10 @@ EOF; '
', // Shortcodes will never be stripped inside elements. '
', ), + array( + '<[[gallery]]>', + '<[[gallery]]>', + ), array( '[gallery]
Hello
[/gallery]', '',