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 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 ); }