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
This commit is contained in:
Jb Audras
2022-09-12 22:29:02 +00:00
parent de06111d65
commit 0ad353d250
3 changed files with 109 additions and 2 deletions

View File

@@ -5026,7 +5026,14 @@ function wp_required_field_indicator() {
$glyph = __( '*' );
$indicator = '<span class="required">' . esc_html( $glyph ) . '</span>';
return $indicator;
/**
* Filters the markup for a visual indicator of required form fields.
*
* @since 6.1.0
*
* @param string $indicator Markup for the indicator element.
*/
return apply_filters( 'wp_required_field_indicator', $indicator );
}
/**
@@ -5043,7 +5050,14 @@ function wp_required_field_message() {
sprintf( __( 'Required fields are marked %s' ), wp_required_field_indicator() )
);
return $message;
/**
* Filters the message to explain required form fields.
*
* @since 6.1.0
*
* @param string $message Message text and glyph wrapped in a `span` tag.
*/
return apply_filters( 'wp_required_field_message', $message );
}
/**

View File

@@ -0,0 +1,45 @@
<?php
/**
* Test wp_required_field_indicator().
*
* @group general
* @group template
*
* @covers ::wp_required_field_indicator
*/
class Tests_General_wpRequiredFieldIndicator extends WP_UnitTestCase {
/**
* Tests that `wp_required_field_indicator()` returns the expected default value.
*
* @ticket 56389
*/
public function test_wp_required_field_indicator_should_return_default_value() {
$this->assertSame( '<span class="required">*</span>', wp_required_field_indicator() );
}
/**
* Tests that `wp_required_field_indicator()` applies 'wp_required_field_indicator' filters.
*
* @ticket 56389
*/
public function test_wp_required_field_indicator_should_apply_wp_required_field_indicator_filters() {
$filter = new MockAction();
add_filter( 'wp_required_field_indicator', array( &$filter, 'filter' ) );
wp_required_field_indicator();
$this->assertSame( 1, $filter->get_call_count() );
}
/**
* Tests that the final return value of `wp_required_field_indicator()` is the result of
* 'wp_required_field_indicator' filters.
*
* @ticket 56389
*/
public function test_wp_required_field_indicator_should_return_wp_required_field_indicator_filters() {
add_filter( 'wp_required_field_indicator', '__return_empty_string' );
$this->assertSame( '', wp_required_field_indicator() );
}
}

View File

@@ -0,0 +1,48 @@
<?php
/**
* Test wp_required_field_message().
*
* @group general
* @group template
*
* @covers ::wp_required_field_message
*/
class Tests_General_wpRequiredFieldMessage extends WP_UnitTestCase {
/**
* Tests that `wp_required_field_message()` returns the expected default value.
*
* @ticket 56389
*/
public function test_wp_required_field_message_should_return_default_value() {
$expected = '<span class="required-field-message">';
$expected .= 'Required fields are marked <span class="required">*</span>';
$expected .= '</span>';
$this->assertSame( $expected, wp_required_field_message() );
}
/**
* Tests that `wp_required_field_message()` applies 'wp_required_field_message' filters.
*
* @ticket 56389
*/
public function test_wp_required_field_message_should_apply_wp_required_field_message_filters() {
$filter = new MockAction();
add_filter( 'wp_required_field_message', array( &$filter, 'filter' ) );
wp_required_field_message();
$this->assertSame( 1, $filter->get_call_count() );
}
/**
* Tests that the final return value of `wp_required_field_message()` is the result of
* 'wp_required_field_message' filters.
*
* @ticket 56389
*/
public function test_wp_required_field_message_should_return_wp_required_field_message_filters() {
add_filter( 'wp_required_field_message', '__return_empty_string' );
$this->assertSame( '', wp_required_field_message() );
}
}