diff --git a/src/wp-includes/widgets/class-wp-widget-text.php b/src/wp-includes/widgets/class-wp-widget-text.php index ad4667bb0f..69b7b91aea 100644 --- a/src/wp-includes/widgets/class-wp-widget-text.php +++ b/src/wp-includes/widgets/class-wp-widget-text.php @@ -95,7 +95,7 @@ class WP_Widget_Text extends WP_Widget { } $wpautop = ! empty( $instance['filter'] ); - $has_line_breaks = ( false !== strpos( $instance['text'], "\n" ) ); + $has_line_breaks = ( false !== strpos( trim( $instance['text'] ), "\n" ) ); // If auto-paragraphs are not enabled and there are line breaks, then ensure legacy mode. if ( ! $wpautop && $has_line_breaks ) { @@ -107,15 +107,6 @@ class WP_Widget_Text extends WP_Widget { return true; } - /* - * If a shortcode is present (with support added by a plugin), assume legacy mode - * since shortcodes would apply at the widget_text filter and thus be applied - * before wpautop runs at the widget_text_content filter. - */ - if ( preg_match( '/' . get_shortcode_regex() . '/', $instance['text'] ) ) { - return true; - } - // In the rare case that DOMDocument is not available we cannot reliably sniff content and so we assume legacy. if ( ! class_exists( 'DOMDocument' ) ) { // @codeCoverageIgnoreStart @@ -348,7 +339,7 @@ class WP_Widget_Text extends WP_Widget {

-

+

diff --git a/tests/phpunit/tests/widgets/text-widget.php b/tests/phpunit/tests/widgets/text-widget.php index af3e2755f5..764b4eaeac 100644 --- a/tests/phpunit/tests/widgets/text-widget.php +++ b/tests/phpunit/tests/widgets/text-widget.php @@ -265,6 +265,18 @@ class Test_WP_Widget_Text extends WP_UnitTestCase { ) ); $this->assertFalse( $widget->is_legacy_instance( $instance ), 'Not legacy when text is empty.' ); + $instance = array_merge( $base_instance, array( + 'text' => "\nOne line", + 'filter' => false, + ) ); + $this->assertFalse( $widget->is_legacy_instance( $instance ), 'Not legacy when there is leading whitespace.' ); + + $instance = array_merge( $base_instance, array( + 'text' => "\nOne line\n\n", + 'filter' => false, + ) ); + $this->assertFalse( $widget->is_legacy_instance( $instance ), 'Not legacy when there is trailing whitespace.' ); + $instance = array_merge( $base_instance, array( 'text' => "One\nTwo", 'filter' => false, @@ -295,12 +307,6 @@ class Test_WP_Widget_Text extends WP_UnitTestCase { ) ); $this->assertTrue( $widget->is_legacy_instance( $instance ), 'Legacy when HTML comment is present.' ); - $instance = array_merge( $base_instance, array( - 'text' => 'Here is a [gallery]', - 'filter' => true, - ) ); - $this->assertTrue( $widget->is_legacy_instance( $instance ), 'Legacy mode when a shortcode is present.' ); - // Check text examples that will not migrate to TinyMCE. $legacy_text_examples = array( '',