get_intermediate_image_sizes()
Получает массив названий всех промежуточных размеров картинок, зарегистрированных для сайта. Также можно получить все данные размеров.
В WordPress при загрузки изображения создаются дополнительные копии оригинального изображения, с разными размерами. Некоторые из них устанавливаются в настройках медиафайлов, а другие регистрируются функцией add_image_size(). Эта функция позволяет получить название всех таких размеров.
Используйте wp_get_registered_image_subsizes(), когда нужно получить подробные данные: ширину, высоту и кадрирование.
Хуки из функции
Возвращает
Строку[]. Массив с названиями имеющихся дополнительных размеров картинок.
Использование
get_intermediate_image_sizes();
Примеры
#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) для высоты и ширины, то технически мы этот размер отключен - миниатюра для него уже не создается, но эта функция его покажет...
Чтобы решить все эти проблемы, смотрите следующий пример.
#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] => ) ) */
#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() get intermediate image sizes WP 7.0
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 );
}