Получаем список всех создаваемых миниатюр, включая пользовательские

С версии WordPress 5.3 это можно сделать одной функцией:

Скопировано
$sizes = wp_get_registered_image_subsizes();
Показать код

Она вернет массив наподобие такого:

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] =>
  )
  [1536x1536] => Array (
    [width] => 1536
    [height] => 1536
    [crop] =>
  )
  [2048x2048] => Array (
    [width] => 2048
    [height] => 2048
    [crop] =>
  )
  [new-size] => Array (
    [width] => 500
    [height] => 500
    [crop] => 1
  )
)

Здесь размер new-size - это пользовательский размер изображения, добавленный через функцию add_image_size().

В более ранних версия WordPress можно использовать такой код:

Скопировано
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;
}
Показать код

Эта функция вернет точно такой же массив, что и выше.