Widgets: Discount shortcodes and leading/trailing line breaks for triggering Text widget legacy mode.
Since plugin-added shortcode handling is just-in-time deferred to run after `wpautop`, there is no need to retain the presence of shortcodes to trigger legacy mode. Also updates Text widget legacy mode notice informing of Custom HTML widget. Amends [41050]. Props westonruter, melchoyce. Fixes #40951 for trunk. git-svn-id: https://develop.svn.wordpress.org/trunk@41070 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
83af67a0e1
commit
0822890218
|
@ -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 {
|
|||
<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $instance['title'] ); ?>"/>
|
||||
</p>
|
||||
<div class="notice inline notice-info notice-alt">
|
||||
<p><?php _e( 'This widget contains code that may work better in the new “Custom HTML” widget. How about trying that widget instead?' ); ?></p>
|
||||
<p><?php _e( 'This widget may contain code that may work better in the new “Custom HTML” widget. How about trying that widget instead?' ); ?></p>
|
||||
</div>
|
||||
<p>
|
||||
<label for="<?php echo $this->get_field_id( 'text' ); ?>"><?php _e( 'Content:' ); ?></label>
|
||||
|
|
|
@ -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(
|
||||
'<span class="hello"></span>',
|
||||
|
|
Loading…
Reference in New Issue