Работа с промежуточными размерами изображений в WordPress: get_intermediate_image_sizes()

Функция get_intermediate_image_sizes()

Функция get_intermediate_image_sizes() в WordPress позволяет получить доступные промежуточные размеры изображений. Эта полезная функция может быть использована как разработчиками, так и обычными пользователями WordPress для работы с изображениями на вашем сайте.

Основная информация

  • Версия: WordPress 3.0.0
  • Используется в:
    • wp_get_registered_image_subsizes()
    • wp_generate_attachment_metadata()
  • Время выполнения:
    • 1 раз — 0.000018 сек (очень быстро)
    • 50000 раз — 0.14 сек (очень быстро)
  • Проверено на: PHP 7.0.5, WP 4.5.2

Возвращаемое значение

Функция возвращает массив строк, где каждая строка — это название размера изображения.

Пример использования

Чтобы получить все доступные размеры изображений, используйте функцию следующим образом:

$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) для высоты и ширины, этот размер фактически будет отключен, и миниатюра для него не будет создаваться. Однако функция get_intermediate_image_sizes() все равно покажет этот размер.

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

Пример получения данных о всех зарегистрированных размерах изображений

Начиная с версии WP 5.3, можно использовать функцию wp_get_registered_image_subsizes():

function get_image_sizes($unset_disabled = true) {
    $sizes = array();
    $wais = wp_get_additional_image_sizes();

    foreach (get_intermediate_image_sizes() as $_size) {
        if (in_array($_size, ['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'],
            );
        }

        // Проверяем, отключён ли размер с нулевыми шириной и высотой
        if ($unset_disabled && ($sizes[$_size]['width'] == 0 && $sizes[$_size]['height'] == 0)) {
            unset($sizes[$_size]);
        }
    }

    return $sizes;
}

Когда вы вызываете эту функцию, вы получите информацию по всем размерам изображений:

print_r(get_image_sizes());

Получение данных о конкретном размере изображения

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

Пример функции для получения данных о конкретном размере

function get_image_size($size) {
    $sizes = get_image_sizes(false);
    return $sizes[$size] ?? false;
}

function get_image_size_width($size) {
    if (!$size_data = get_image_size($size)) return false;
    return $size_data['width'] ?? false;
}

function get_image_size_height($size) {
    if (!$size_data = get_image_size($size)) return false;
    return $size_data['height'] ?? false;
}

Теперь можно использовать эти функции для получения данных:

$medium_size = get_image_size('medium');
$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() является полезным инструментом для работы с изображениями в WordPress. С ее помощью вы можете быстро получать информацию о различных размерах изображений, что помогает оптимизировать ваш сайт и улучшить его производительность.

Leave a Reply

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