Themes: Add a hook to filter theme header image URL.

This changeset introduces the `get_header_image` filter, which can be used to modify header image URL returned by `get_header_image()`, in themes that support the Header Image feature. 

Props hztyfoon, audrasjb, mukesh27, SergeyBiryukov, costdev.
Fixes #56180.


git-svn-id: https://develop.svn.wordpress.org/trunk@53741 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Jb Audras
2022-07-20 21:11:30 +00:00
parent 3fbd6a9478
commit a925aabc9c
2 changed files with 67 additions and 0 deletions

View File

@@ -1179,6 +1179,20 @@ function get_header_image() {
$url = get_random_header_image();
}
/**
* Filters the header image URL.
*
* @since 6.1.0
*
* @param string $url Header image URL.
*/
$url = apply_filters( 'get_header_image', $url );
if ( ! is_string( $url ) ) {
return false;
}
$url = trim( $url );
return sanitize_url( set_url_scheme( $url ) );
}

View File

@@ -81,6 +81,59 @@ class Tests_Theme_CustomHeader extends WP_UnitTestCase {
$this->assertFalse( $image );
}
/**
* Tests the "get_header_image" filter.
*
* @ticket 56180
*
* @covers get_header_image
*
* @dataProvider data_filter_header_image
*
* @param mixed $header_image The header image.
* @param string $expected The expected return value from get_header_image().
*/
public function test_filter_header_image( $header_image, $expected ) {
add_filter(
'get_header_image',
static function() use ( $header_image ) {
return $header_image;
}
);
$this->assertSame( $expected, get_header_image() );
}
/**
* Data provider.
*
* @return array
*/
public function data_filter_header_image() {
return array(
'an image url' => array(
'header_image' => 'http://example.org/image.png',
'expected' => 'http://example.org/image.png',
),
'an empty string' => array(
'header_image' => '',
'expected' => '',
),
'a string with spaces' => array(
'header_image' => ' ',
'expected' => '',
),
'null' => array(
'header_image' => null,
'expected' => false,
),
'false' => array(
'header_image' => false,
'expected' => false,
),
);
}
public function test_get_header_image_tag_without_registered_default_image() {
$this->add_theme_support();
$html = get_header_image_tag();