29

What function can I use in a plugin to get the dimensions of every image size (in an array preferably) that is defined in a child theme?

Just for clarification I am not asking how to create a new image size.

  • Searching for something like this, but with an interface, came across the plugin Additional image sizes (zui). It has 500 days without updates but passed the first batch of tests. – brasofilo Jul 6 '12 at 1:51
51

Found it here. The answer is:

global $_wp_additional_image_sizes; 
print '<pre>'; 
print_r( $_wp_additional_image_sizes ); 
print '</pre>';
| improve this answer | |
  • Adding it to the top of the functions.php file won't work, but stick it in any of your functions in that file and it should work. – kevnk Aug 15 '17 at 20:40
20

WordPress core doesn't have a native method for getting intermediate image sizes (i.e. width and height), but the following helper function will get all registered image sizes along with their dimensions:

/**
 * Get all the registered image sizes along with their dimensions
 *
 * @global array $_wp_additional_image_sizes
 *
 * @link http://core.trac.wordpress.org/ticket/18947 Reference ticket
 *
 * @return array $image_sizes The image sizes
 */
function _get_all_image_sizes() {
    global $_wp_additional_image_sizes;

    $default_image_sizes = get_intermediate_image_sizes();

    foreach ( $default_image_sizes as $size ) {
        $image_sizes[ $size ][ 'width' ] = intval( get_option( "{$size}_size_w" ) );
        $image_sizes[ $size ][ 'height' ] = intval( get_option( "{$size}_size_h" ) );
        $image_sizes[ $size ][ 'crop' ] = get_option( "{$size}_crop" ) ? get_option( "{$size}_crop" ) : false;
    }

    if ( isset( $_wp_additional_image_sizes ) && count( $_wp_additional_image_sizes ) ) {
        $image_sizes = array_merge( $image_sizes, $_wp_additional_image_sizes );
    }

    return $image_sizes;
}

Which will output results similar to:

Array
(
    [thumbnail] => Array
        (
            [width] => 150
            [height] => 150
            [crop] => 1
        )

    [medium] => Array
        (
            [width] => 300
            [height] => 300
            [crop] => 
        )

    [medium_large] => Array
        (
            [width] => 768
            [height] => 0
            [crop] => 
        )

    [large] => Array
        (
            [width] => 1024
            [height] => 1024
            [crop] => 
        )

)
| improve this answer | |
  • 4
    +1 for a more complete answer. The others return additional sizes but not default ones. – Cazuma Nii Cavalcanti Jan 8 '17 at 22:30
  • 2
    Even better if you use $default_image_sizes = get_intermediate_image_sizes(); as there's a medium_large size since WP 4.4. – natebeaty Sep 21 '17 at 22:23
  • Good suggestion; I've updated the answer with your recommendation. – rjb Sep 23 '17 at 19:24
  • ACF has spoiled me with its media array. – Adam Patterson May 21 '19 at 2:54
  • Useful in WP 5.4 using PHP 7.3 on March 2020 :) – EsaulFarfan Apr 1 at 7:43
17

If you only need the names of all image sizes, you can use get_intermediate_image_sizes:

<pre>
<?php print_r(get_intermediate_image_sizes()); ?>
</pre>
| improve this answer | |
5

If the other answer did not work, use this code, so it will run after WordPress is initialized.

add_action('init', 'get_all_image_sizes');

function get_all_image_sizes(){
    global $_wp_additional_image_sizes; 
    print '<pre>'; 
    print_r( $_wp_additional_image_sizes ); 
    print '</pre>';
}
| improve this answer | |
  • I have tested several methods and this one finally worked. (WP + WooCommerce + custom theme) – Juraj.Lorinc Feb 19 '18 at 11:19
4

Since WP 5.3 it is enough to use this function:

wp_get_registered_image_subsizes();
| improve this answer | |
2

Since WP 4.7 you can use wp_get_additional_image_sizes() to get additional image sizes registered (excluding the default image sizes added by WP).

Since WP 5.3 you can use wp_get_registered_image_subsizes() to get all the image sizes registered.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.