# Функция IMAGE_GET_INTERMEDIATE_SIZE() │ WP 2.5.0
Функция image_get_intermediate_size()
позволяет получить промежуточный размер изображения. Она возвращает путь к изменённому изображению, его ширину и высоту.
## Параметры функции
- **$size**: Можете передать массив с шириной и высотой, или строку с названием размера. Если передано название, вернётся путь к изображению. Если массив, функция попытается найти ближайший больший размер изображения. Если ничего не найдено, функция вернёт false
.
## Использование метаданных 'sizes'
Метаданные 'sizes' содержат информацию о доступных размерах изображений, которые могут быть использованы для параметра $size
.
## Возвращаемое значение
Функция возвращает массив с относительным путем к файлу, шириной и высотой. Если указанный размер не зарегистрирован, произойдет поиск ближайшего доступного размера. Если ничего не найдено, вернётся false
.
## Синтаксис
```php
image_get_intermediate_size( $post_id, $size );
- $post_id (int): ID вложения (обязательный параметр).
- $size (string|int[]): Размер изображения. Может быть любым зарегистрированным размером изображения или массивом ширины и высоты в пикселях. По умолчанию используется размер 'thumbnail'.
Примеры использования
Пример 1: Получение данных изображения
Получим данные изображения с ID 4831 и размером 'medium':
$intermediate = image_get_intermediate_size( 4831, 'medium' );
print_r( $intermediate );
/*
Вернёт:
Array
(
[file] => setting2-120x14.png
[width] => 120
[height] => 14
[mime-type] => image/png
[path] => 2014/07/setting2-120x14.png
[url] => http://wp-kama.ru/wp-content/uploads/2014/07/setting2-120x14.png
)
*/
Пример 2: Указание массива в параметре $size
Получим данные изображения с ID 4831, указав размеры (например, 90x90):
$intermediate = image_get_intermediate_size( 4831, [90, 90] );
/*
Вернёт:
Array
(
[file] => setting2-120x14.png
[width] => 90
[height] => 10
)
*/
Этот код выберет наиболее подходящий размер из доступных, не создавая новый.
Пример 3: Отображение изображения
В этом примере мы выведем изображение, если оно существует, или сообщение "нет изображения", если его нет:
function get_image_link_if_exists( $size ){
global $post;
// Получаем ID миниатюры поста
$thumbnail_id = get_post_thumbnail_id( $post->ID );
// Пытаемся получить изображение
$image = image_get_intermediate_size( $thumbnail_id, $size );
if( $image ){
echo '
';
}
else {
echo 'Нет изображения';
}
}
get_image_link_if_exists('my_size');
Изменения
Функция была введена в версии 2.5.0.
Код функции image_get_intermediate_size()
Вот код самой функции для лучшего понимания:
function image_get_intermediate_size( $post_id, $size = 'thumbnail' ) {
$imagedata = wp_get_attachment_metadata( $post_id );
if ( ! $size || ! is_array( $imagedata ) || empty( $imagedata['sizes'] ) ) {
return false;
}
$data = array();
// Поиск наилучшего соответствия, если $size - массив.
if ( is_array( $size ) ) {
$candidates = array();
foreach ( $imagedata['sizes'] as $_size => $data ) {
if ( (int) $data['width'] === (int) $size[0] && (int) $data['height'] === (int) $size[1] ) {
$candidates[ $data['width'] * $data['height'] ] = $data;
break;
}
if ( $data['width'] >= $size[0] && $data['height'] >= $size[1] ) {
$candidates[ $data['width'] * $data['height'] ] = $data;
}
}
if ( ! empty( $candidates ) ) {
ksort( $candidates );
$data = array_shift( $candidates );
} elseif ( ! empty( $imagedata['sizes']['thumbnail'] ) && $imagedata['sizes']['thumbnail']['width'] >= $size[0] && $imagedata['sizes']['thumbnail']['width'] >= $size[1] ) {
$data = $imagedata['sizes']['thumbnail'];
} else {
return false;
}
list( $data['width'], $data['height'] ) = image_constrain_size_for_editor( $data['width'], $data['height'], $size );
} elseif ( ! empty( $imagedata['sizes'][ $size ] ) ) {
$data = $imagedata['sizes'][ $size ];
}
if ( empty( $data ) ) {
return false;
}
if ( empty( $data['path'] ) && ! empty( $data['file'] ) && ! empty( $imagedata['file'] ) ) {
$file_url = wp_get_attachment_url( $post_id );
$data['path'] = path_join( dirname( $imagedata['file'] ), $data['file'] );
$data['url'] = path_join( dirname( $file_url ), $data['file'] );
}
return apply_filters( 'image_get_intermediate_size', $data, $post_id, $size );
}
Связанные функции
add_image_size()
: Добавляет новый размер изображения.delete_post_thumbnail()
: Удаляет миниатюру поста.get_intermediate_image_sizes()
: Возвращает все промежуточные размеры изображений.get_post_thumbnail_id()
: Получ��ет ID миниатюры поста.get_the_post_thumbnail()
: Получает HTML-код миниатюры поста.image_downsize()
: Снижает размер изображения для его отображения.
Используйте эти функции в своей работе с изображениями в WordPress.