Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 20 additions & 2 deletions src/wp-includes/media.php
Original file line number Diff line number Diff line change
Expand Up @@ -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 ] );
}

Expand Down
42 changes: 42 additions & 0 deletions tests/phpunit/tests/media.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
*/
Expand Down
Loading