Размер резервного изображения при использовании wp_get_attachment_image_src / сжатое изображение полного размера

Вопрос или проблема

Я использую ACF для получения изображений с помощью ‘wp_get_attachment_image_src’, как показано ниже:

<?php $image = wp_get_attachment_image_src(get_field('image'), 'large'); ?>
<img src="https://wordpress.stackexchange.com/questions/128918/<?php echo $image[0]; ?>" alt="" />

Какой бы размер изображения я ни ввел (здесь это ‘large’, но это может быть пользовательский размер изображения), если загруженное изображение оказалось меньше заданного размера, этот размер не будет создан, и WordPress будет использовать полное, оригинальное, не сжатое изображение в качестве запасного варианта.

Это очень нежелательно, так как изображение часто будет без сжатия и иметь очень большой размер файла без необходимости.

Какие есть обходные пути для этого? Могу ли я заставить WordPress создать изображение полного пиксельного размера, но сжатое в формате jpeg, и использовать его в качестве запасного варианта?

Спасибо за вашу помощь!

Параметр SIZE в wp_get_attachment_image_src вернёт изображение, наиболее близкое к заданному.

Если вы хотите вернуть обрезанное изображение, вы можете зарегистрировать свои собственные размеры с помощью функции add_image_size().

После того как вы зарегистрируете свои размеры, вам нужно будет регенерировать все старые изображения, иначе старые изображения не будут иметь новый размер.

Вы можете сделать это с помощью плагина “Regenerate Thumbnails”.

Ответ или решение

Когда вы используете функцию wp_get_attachment_image_src в WordPress для получения изображений, иногда возникают ситуации, когда нужный размер изображения (например, ‘large’ или пользовательский размер) отсутствует. В таких случаях WordPress по умолчанию возвращает оригинальное, не сжатое изображение, что может привести к нежелательным последствиям, связанным с загрузкой тяжелых изображений и, как следствие, увеличением времени загрузки страницы.

Проблема с размерами изображений

Вы правы, что когда загруженное изображение меньше, чем запрашиваемый размер, функция wp_get_attachment_image_src вернет оригинальное изображение, которое часто не оптимизировано для веба. Это может существенно ухудшить производительность вашего сайта.

Решения и рекомендации

  1. Создание новых размеров изображений:

    Вы можете использовать функцию add_image_size() для регистрации новых размеров изображений в вашей теме. Например:

    add_image_size('custom-size', 800, 600, true); // создаст обрезанный размер 800x600

    После регистрации новых размеров вам необходимо регенерировать миниатюры для всех загруженных изображений. Это можно сделать с помощью плагина Regenerate Thumbnails, который позволит преобразовать все уже загруженные изображения в разрешения, которые вы добавили.

  2. Использование фильтров для получения сжатых изображений:

    Вместо того чтобы напрямую запрашивать размер изображения, вы можете использовать фильтры, чтобы предоставить более логичный подход к выбору изображения. Например, вы можете проверить размер изображения и, если он меньше требуемого, возвращать заранее определённое изображение:

    function custom_get_image_src($image_id, $size) {
       $image = wp_get_attachment_image_src($image_id, $size);
       if (!$image || !$image[0]) {
           // Попытка получить оригинальный размер и вызвать альтернативную функцию сжатия
           $full_image = wp_get_attachment_image_src($image_id, 'full');
           if ($full_image) {
               $compressed_image_url = compress_image($full_image[0]); // Ваша функция сжатия
               return $compressed_image_url;
           }
       }
       return $image[0];
    }
  3. Создание функции сжатия изображений:

    Вам понадобится реализовать функцию, которая будет обрабатывать изображение и сжимать его. Можно использовать библиотеки PHP, такие как GD или Imagick, но имейте в виду, что это может потребовать дополнительных ресурсов сервера.

  4. Использование плагинов для сжатия изображений:

    Существуют различные плагины, такие как Smush или Compress JPEG & PNG images, которые могут автоматически сжимать загружаемые изображения без необходимости ручной обработки. Это лучший выбор для сайтов, где производительность имеет критическое значение.

Заключение

Используя комбинацию оптимизации размеров изображений и инструменты сжатия, вы сможете эффективно управлять файлами изображений на вашем сайте и избегать проблем, связанных с большими размерами изображений. Не забывайте регистрировать новые размеры и использовать плагины для повышения производительности. Это не только улучшит опыт пользователей на вашем сайте, но и может позитивно сказаться на SEO-позициях благодаря снижению времени загрузки страниц.

Оцените материал
Добавить комментарий

Капча загружается...