Skip to content

Commit 0ad353d

Browse files
committed
Comments: Make wp_required_field_indicator() and wp_required_field_message() output filterable.
This changeset introduces two new hooks: - `wp_required_field_indicator` allows developers to filter the HTML output of the `wp_required_field_indicator()` function. - `wp_required_field_message` does the same for the `wp_required_field_message()` function. The changeset also adds new phpunit tests for these filters. Follow-up to [53888], [54136]. Props kebbet, audrasjb, sabernhardt, costdev, mukesh27. Fixes #56389. See #54394. git-svn-id: https://develop.svn.wordpress.org/trunk@54137 602fd350-edb4-49c9-b593-d223f7449a82
1 parent de06111 commit 0ad353d

File tree

3 files changed

+109
-2
lines changed

3 files changed

+109
-2
lines changed

src/wp-includes/general-template.php

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5026,7 +5026,14 @@ function wp_required_field_indicator() {
50265026
$glyph = __( '*' );
50275027
$indicator = '<span class="required">' . esc_html( $glyph ) . '</span>';
50285028

5029-
return $indicator;
5029+
/**
5030+
* Filters the markup for a visual indicator of required form fields.
5031+
*
5032+
* @since 6.1.0
5033+
*
5034+
* @param string $indicator Markup for the indicator element.
5035+
*/
5036+
return apply_filters( 'wp_required_field_indicator', $indicator );
50305037
}
50315038

50325039
/**
@@ -5043,7 +5050,14 @@ function wp_required_field_message() {
50435050
sprintf( __( 'Required fields are marked %s' ), wp_required_field_indicator() )
50445051
);
50455052

5046-
return $message;
5053+
/**
5054+
* Filters the message to explain required form fields.
5055+
*
5056+
* @since 6.1.0
5057+
*
5058+
* @param string $message Message text and glyph wrapped in a `span` tag.
5059+
*/
5060+
return apply_filters( 'wp_required_field_message', $message );
50475061
}
50485062

50495063
/**
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?php
2+
/**
3+
* Test wp_required_field_indicator().
4+
*
5+
* @group general
6+
* @group template
7+
*
8+
* @covers ::wp_required_field_indicator
9+
*/
10+
class Tests_General_wpRequiredFieldIndicator extends WP_UnitTestCase {
11+
12+
/**
13+
* Tests that `wp_required_field_indicator()` returns the expected default value.
14+
*
15+
* @ticket 56389
16+
*/
17+
public function test_wp_required_field_indicator_should_return_default_value() {
18+
$this->assertSame( '<span class="required">*</span>', wp_required_field_indicator() );
19+
}
20+
21+
/**
22+
* Tests that `wp_required_field_indicator()` applies 'wp_required_field_indicator' filters.
23+
*
24+
* @ticket 56389
25+
*/
26+
public function test_wp_required_field_indicator_should_apply_wp_required_field_indicator_filters() {
27+
$filter = new MockAction();
28+
add_filter( 'wp_required_field_indicator', array( &$filter, 'filter' ) );
29+
30+
wp_required_field_indicator();
31+
32+
$this->assertSame( 1, $filter->get_call_count() );
33+
}
34+
35+
/**
36+
* Tests that the final return value of `wp_required_field_indicator()` is the result of
37+
* 'wp_required_field_indicator' filters.
38+
*
39+
* @ticket 56389
40+
*/
41+
public function test_wp_required_field_indicator_should_return_wp_required_field_indicator_filters() {
42+
add_filter( 'wp_required_field_indicator', '__return_empty_string' );
43+
$this->assertSame( '', wp_required_field_indicator() );
44+
}
45+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
/**
3+
* Test wp_required_field_message().
4+
*
5+
* @group general
6+
* @group template
7+
*
8+
* @covers ::wp_required_field_message
9+
*/
10+
class Tests_General_wpRequiredFieldMessage extends WP_UnitTestCase {
11+
12+
/**
13+
* Tests that `wp_required_field_message()` returns the expected default value.
14+
*
15+
* @ticket 56389
16+
*/
17+
public function test_wp_required_field_message_should_return_default_value() {
18+
$expected = '<span class="required-field-message">';
19+
$expected .= 'Required fields are marked <span class="required">*</span>';
20+
$expected .= '</span>';
21+
$this->assertSame( $expected, wp_required_field_message() );
22+
}
23+
24+
/**
25+
* Tests that `wp_required_field_message()` applies 'wp_required_field_message' filters.
26+
*
27+
* @ticket 56389
28+
*/
29+
public function test_wp_required_field_message_should_apply_wp_required_field_message_filters() {
30+
$filter = new MockAction();
31+
add_filter( 'wp_required_field_message', array( &$filter, 'filter' ) );
32+
33+
wp_required_field_message();
34+
35+
$this->assertSame( 1, $filter->get_call_count() );
36+
}
37+
38+
/**
39+
* Tests that the final return value of `wp_required_field_message()` is the result of
40+
* 'wp_required_field_message' filters.
41+
*
42+
* @ticket 56389
43+
*/
44+
public function test_wp_required_field_message_should_return_wp_required_field_message_filters() {
45+
add_filter( 'wp_required_field_message', '__return_empty_string' );
46+
$this->assertSame( '', wp_required_field_message() );
47+
}
48+
}

0 commit comments

Comments
 (0)