Функция IMAGE_GET_INTERMEDIATE_SIZE() │ WP 2.5.0

# Функция 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.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *