From f6dfd6d148abddd181288764d22facc32b3bb34b Mon Sep 17 00:00:00 2001 From: Sainath Poojary Date: Wed, 3 Jun 2026 12:17:58 +0530 Subject: [PATCH] Media: Add $include_default_sizes parameter to has_image_size() for core sizes. --- src/wp-includes/media.php | 22 ++++++++++++++++-- tests/phpunit/tests/media.php | 42 +++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/src/wp-includes/media.php b/src/wp-includes/media.php index d318a275a9607..e421268a9575f 100644 --- a/src/wp-includes/media.php +++ b/src/wp-includes/media.php @@ -310,13 +310,31 @@ function add_image_size( $name, $width = 0, $height = 0, $crop = false ) { /** * Checks if an image size exists. * + * By default, `has_image_size()` will return false for core image sizes. For + * this function to return true for core image sizes, pass true as the second + * parameter. + * * @since 3.9.0 + * @since 7.1.0 Added the `$include_default_sizes` parameter. * - * @param string $name The image size to check. + * @param string $name The image size to check. + * @param bool $include_default_sizes Optional. Whether to include default + * core image sizes. Default false. * @return bool True if the image size exists, false if not. */ -function has_image_size( $name ) { +function has_image_size( $name, $include_default_sizes = false ) { $sizes = wp_get_additional_image_sizes(); + + if ( $include_default_sizes ) { + $default_sizes = array( + 'thumbnail' => true, + 'medium' => true, + 'medium_large' => true, + 'large' => true, + ); + $sizes = array_merge( $default_sizes, $sizes ); + } + return isset( $sizes[ $name ] ); } diff --git a/tests/phpunit/tests/media.php b/tests/phpunit/tests/media.php index 060a7295f6bb4..62b37f4159b94 100644 --- a/tests/phpunit/tests/media.php +++ b/tests/phpunit/tests/media.php @@ -1228,6 +1228,48 @@ public function test_has_image_size() { remove_image_size( 'test-size' ); } + /** + * Tests that has_image_size() returns false for core/default image sizes + * when the second parameter is not passed (or false). + * + * @ticket 43046 + * + * @dataProvider data_default_image_size_names + * + * @param string $size_name A core image size name. + */ + public function test_has_image_size_returns_false_for_default_sizes( $size_name ) { + $this->assertFalse( has_image_size( $size_name ) ); + } + + /** + * Tests that has_image_size() returns true for core/default image sizes + * when true is passed as the second parameter. + * + * @ticket 43046 + * + * @dataProvider data_default_image_size_names + * + * @param string $size_name A core image size name. + */ + public function test_has_image_size_returns_true_for_default_sizes_with_include_default( $size_name ) { + $this->assertTrue( has_image_size( $size_name, true ) ); + } + + /** + * Data provider for core image size names. + * + * @return array[] + */ + public function data_default_image_size_names() { + return array( + 'thumbnail' => array( 'thumbnail' ), + 'medium' => array( 'medium' ), + 'medium_large' => array( 'medium_large' ), + 'large' => array( 'large' ), + ); + } + /** * @ticket 30346 */