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. |