How to get a list of all the possible thumbnail sizes set within a theme

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.

Related posts

Leave a Reply

7 comments

  1. 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] => 
            )
    
    )
    
  2. 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>';
    }
    
  3. Use the following functions:

    get_intermediate_image_sizes(); // get all the image size names.
    wp_get_additional_image_sizes(); // get all the additional image size data.
    wp_get_registered_image_subsizes(); // get all the image size data.