get_intermediate_image_sizes()WP 3.0.0

Получает массив названий всех промежуточных размеров картинок, зарегистрированных для сайта. Также можно получить все данные размеров.

В WordPress при загрузки изображения создаются дополнительные копии оригинального изображения, с разными размерами. Некоторые из них устанавливаются в настройках медиафайлов, а другие регистрируются функцией add_image_size(). Эта функция позволяет получить название всех таких размеров.

Используйте wp_get_registered_image_subsizes(), когда нужно получить подробные данные: ширину, высоту и кадрирование.

1 раз — 0.000018 сек (очень быстро) | 50000 раз — 0.14 сек (очень быстро) | PHP 7.0.5, WP 4.5.2
Хуки из функции

Возвращает

Строку[]. Массив с названиями имеющихся дополнительных размеров картинок.

Использование

get_intermediate_image_sizes();

Примеры

0

#1 Получим названия вех размеров

$sizes = get_intermediate_image_sizes();
print_r( $sizes );

/* Получим:
Array
(
	[0] => thumbnail
	[1] => medium
	[2] => medium_large
	[3] => large
	[4] => shop_thumbnail
	[5] => shop_catalog
	[6] => shop_single
	[7] => post-thumbnail
)
*/

Однако в этом случае мы не видим данных каждого из размеров, какая для него установлена ширина и высота, кадрировано изображение или нет...

Также, если например в медиафайлах для размера "Большой" (large) установить нули (0) для высоты и ширины, то технически мы этот размер отключен - миниатюра для него уже не создается, но эта функция его покажет...

Чтобы решить все эти проблемы, смотрите следующий пример.

0

#2 Получим данные всех зарегистрированных размеров картинок

Начиная с WP 5.3 существует функция с точно таким же функционалом: wp_get_registered_image_subsizes().

В WordPress нет такой встроенной функции, но её не сложно создать, имея под рукой get_intermediate_image_sizes():

/**
 * Получает информацию обо всех зарегистрированных размерах картинок.
 * 
 * @global $_wp_additional_image_sizes
 * @uses   get_intermediate_image_sizes()
 * 
 * @param  boolean [$unset_disabled = true] Удалить из списка размеры с 0 высотой и шириной?
 * @return array Данные всех размеров.
 */
function get_image_sizes( $unset_disabled = true ) {
	$wais = & $GLOBALS['_wp_additional_image_sizes'];

	$sizes = array();

	foreach ( get_intermediate_image_sizes() as $_size ) {
		if ( in_array( $_size, array('thumbnail', 'medium', 'medium_large', 'large') ) ) {
			$sizes[ $_size ] = array(
				'width'  => get_option( "{$_size}_size_w" ),
				'height' => get_option( "{$_size}_size_h" ),
				'crop'   => (bool) get_option( "{$_size}_crop" ),
			);
		}
		elseif ( isset( $wais[$_size] ) ) {
			$sizes[ $_size ] = array(
				'width'  => $wais[ $_size ]['width'],
				'height' => $wais[ $_size ]['height'],
				'crop'   => $wais[ $_size ]['crop'],
			);
		}

		// size registered, but has 0 width and height
		if( $unset_disabled && ($sizes[ $_size ]['width'] == 0) && ($sizes[ $_size ]['height'] == 0) )
			unset( $sizes[ $_size ] );
	}

	return $sizes;
}

Вызвав такую функцию получим:

print_r( get_image_sizes() );

/*
Array
(
	[thumbnail] => Array
		(
			[width] => 80
			[height] => 80
			[crop] => 1
		)

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

)
*/
0

#3 Получим данные отдельного размера

Теперь, имея под рукой функцию, которая получает все размеры изображений и их данные, можно легко дополнить функционал, написав функции для получения отдельных данных указанного размера.

/**
 * Получает данные определенного размера изображения.
 *
 * @uses   get_image_sizes()
 * @param  string $size Название размера
 * @return bool|array $size Данные размера изображения или false если такого размера нет.
 */
function get_image_size( $size ) {
	$sizes = get_image_sizes(0);

	return isset( $sizes[ $size ] ) ? $sizes[ $size ] : false;
}

/**
 * Получает ширину определенного размера изображения.
 *
 * @uses   get_image_size()
 * @param  string $size Название размера
 * @return bool|int Ширину или false если размера нет.
 */
function get_image_size_width( $size ) {
	if ( ! $size = get_image_size( $size ) )
		return false;

	return isset( $size['width'] ) ? $size['width'] : false;
}

/**
 * Получает высоту определенного размера изображения.
 *
 * @uses   get_image_size()
 * @param  string $size Название размера
 * @return bool|int Высоту или false если размера нет.
 */
function get_image_size_height( $size ) {
	if ( ! $size = get_image_size( $size ) )
		return false;

	return isset( $size['height'] ) ? $size['height'] : false;
}

А теперь демонстрация работы созданных функций:

$medium_size = get_image_size('medium');
/* вернет:
Array
(
	[width] => 120
	[height] => 120
	[crop] => 
)
*/

$medium_size_width = get_image_size_width('medium'); //> 120

$medium_size_height = get_image_size_height('medium'); //> 120

Список изменений

С версии 3.0.0 Введена.

Код get_intermediate_image_sizes() WP 6.4.3

function get_intermediate_image_sizes() {
	$default_sizes    = array( 'thumbnail', 'medium', 'medium_large', 'large' );
	$additional_sizes = wp_get_additional_image_sizes();

	if ( ! empty( $additional_sizes ) ) {
		$default_sizes = array_merge( $default_sizes, array_keys( $additional_sizes ) );
	}

	/**
	 * Filters the list of intermediate image sizes.
	 *
	 * @since 2.5.0
	 *
	 * @param string[] $default_sizes An array of intermediate image size names. Defaults
	 *                                are 'thumbnail', 'medium', 'medium_large', 'large'.
	 */
	return apply_filters( 'intermediate_image_sizes', $default_sizes );
}