diff --git src/wp-includes/default-filters.php src/wp-includes/default-filters.php
index ada9c53c3f..8f0237028d 100644
|
|
|
add_filter( 'widget_text_content', 'wptexturize' ); |
| 170 | 170 | add_filter( 'widget_text_content', 'convert_smilies', 20 ); |
| 171 | 171 | add_filter( 'widget_text_content', 'wpautop' ); |
| 172 | 172 | |
| 173 | | add_filter( 'widget_custom_html_content', 'balanceTags' ); |
| 174 | | |
| 175 | 173 | add_filter( 'date_i18n', 'wp_maybe_decline_date' ); |
| 176 | 174 | |
| 177 | 175 | // RSS filters |
diff --git src/wp-includes/widgets/class-wp-widget-custom-html.php src/wp-includes/widgets/class-wp-widget-custom-html.php
index 2db50f4d22..5de618285f 100644
|
|
|
class WP_Widget_Custom_HTML extends WP_Widget { |
| 61 | 61 | /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */ |
| 62 | 62 | $title = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ); |
| 63 | 63 | |
| 64 | | $content = $instance['content']; |
| | 64 | /** This filter is documented in wp-includes/widgets/class-wp-widget-text.php */ |
| | 65 | $content = apply_filters( 'widget_text', $instance['content'], $instance, $this ); |
| 65 | 66 | |
| 66 | 67 | /** |
| 67 | 68 | * Filters the content of the Custom HTML widget. |
diff --git src/wp-includes/widgets/class-wp-widget-text.php src/wp-includes/widgets/class-wp-widget-text.php
index 69b7b91aea..2297d2bee2 100644
|
|
|
class WP_Widget_Text extends WP_Widget { |
| 213 | 213 | * |
| 214 | 214 | * @since 2.3.0 |
| 215 | 215 | * @since 4.4.0 Added the `$this` parameter. |
| | 216 | * @since 4.8.1 The `$this` param may now be a `WP_Widget_Custom_HTML` object in addition to a `WP_Widget_Text` object. |
| 216 | 217 | * |
| 217 | | * @param string $text The widget content. |
| 218 | | * @param array $instance Array of settings for the current widget. |
| 219 | | * @param WP_Widget_Text $this Current Text widget instance. |
| | 218 | * @param string $text The widget content. |
| | 219 | * @param array $instance Array of settings for the current widget. |
| | 220 | * @param WP_Widget_Text|WP_Widget_Custom_HTML $this Current Text widget instance. |
| 220 | 221 | */ |
| 221 | 222 | $text = apply_filters( 'widget_text', $text, $instance, $this ); |
| 222 | 223 | |
diff --git tests/phpunit/tests/widgets/custom-html-widget.php tests/phpunit/tests/widgets/custom-html-widget.php
index 3305d8ad35..edbdae3c50 100644
|
|
|
class Test_WP_Widget_Custom_HTML extends WP_UnitTestCase { |
| 21 | 21 | protected $widget_custom_html_content_args; |
| 22 | 22 | |
| 23 | 23 | /** |
| | 24 | * Args passed to the widget_text filter. |
| | 25 | * |
| | 26 | * @var array |
| | 27 | */ |
| | 28 | protected $widget_text_args; |
| | 29 | |
| | 30 | /** |
| 24 | 31 | * Test constructor. |
| 25 | 32 | * |
| 26 | 33 | * @covers WP_Widget_Custom_HTML::__constructor |
| … |
… |
class Test_WP_Widget_Custom_HTML extends WP_UnitTestCase { |
| 52 | 59 | 'content' => $content, |
| 53 | 60 | ); |
| 54 | 61 | |
| 55 | | $this->assertEquals( 10, has_filter( 'widget_custom_html_content', 'balanceTags' ) ); |
| 56 | | |
| 57 | 62 | update_option( 'use_balanceTags', 0 ); |
| 58 | 63 | add_filter( 'widget_custom_html_content', array( $this, 'filter_widget_custom_html_content' ), 5, 3 ); |
| | 64 | add_filter( 'widget_text', array( $this, 'filter_widget_text' ), 10, 3 ); |
| 59 | 65 | ob_start(); |
| 60 | 66 | $this->widget_custom_html_content_args = null; |
| 61 | 67 | $widget->widget( $args, $instance ); |
| 62 | 68 | $output = ob_get_clean(); |
| 63 | 69 | $this->assertNotEmpty( $this->widget_custom_html_content_args ); |
| 64 | | $this->assertContains( '[filter:widget_custom_html_content]', $output ); |
| | 70 | $this->assertContains( '[filter:widget_text][filter:widget_custom_html_content]', $output ); |
| 65 | 71 | $this->assertNotContains( '<p>', $output ); |
| 66 | 72 | $this->assertNotContains( '<br>', $output ); |
| 67 | 73 | $this->assertNotContains( '</u>', $output ); |
| | 74 | $this->assertEquals( $instance, $this->widget_text_args[1] ); |
| 68 | 75 | $this->assertEquals( $instance, $this->widget_custom_html_content_args[1] ); |
| | 76 | $this->assertSame( $widget, $this->widget_text_args[2] ); |
| 69 | 77 | $this->assertSame( $widget, $this->widget_custom_html_content_args[2] ); |
| 70 | 78 | remove_filter( 'widget_custom_html_content', array( $this, 'filter_widget_custom_html_content' ), 5, 3 ); |
| | 79 | remove_filter( 'widget_text', array( $this, 'filter_widget_text' ), 10 ); |
| 71 | 80 | |
| 72 | 81 | update_option( 'use_balanceTags', 1 ); |
| 73 | 82 | ob_start(); |
| … |
… |
class Test_WP_Widget_Custom_HTML extends WP_UnitTestCase { |
| 77 | 86 | } |
| 78 | 87 | |
| 79 | 88 | /** |
| 80 | | * Filters the content of the Custom HTML widget. |
| | 89 | * Filters the content of the Custom HTML widget using the legacy widget_text filter. |
| | 90 | * |
| | 91 | * @param string $text The widget content. |
| | 92 | * @param array $instance Array of settings for the current widget. |
| | 93 | * @param WP_Widget_Custom_HTML $widget Current widget instance. |
| | 94 | * @return string Widget content. |
| | 95 | */ |
| | 96 | function filter_widget_text( $text, $instance, $widget ) { |
| | 97 | $this->widget_text_args = func_get_args(); |
| | 98 | |
| | 99 | $text .= '[filter:widget_text]'; |
| | 100 | return $text; |
| | 101 | } |
| | 102 | |
| | 103 | /** |
| | 104 | * Filters the content of the Custom HTML widget using the dedicated widget_custom_html_content filter. |
| 81 | 105 | * |
| 82 | 106 | * @param string $widget_content The widget content. |
| 83 | 107 | * @param array $instance Array of settings for the current widget. |