Как удалить ненужные размеры изображений WooCommerce без плагинов

Почему WooCommerce генерирует множество размеров изображений

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

Какие размеры создаются по умолчанию

WooCommerce по умолчанию создает следующие размеры при загрузке товара:

  • woocommerce_thumbnail — миниатюра товара (по умолчанию 300x300 px);
  • woocommerce_single — большое изображение товара (600x600 px);
  • woocommerce_gallery_thumbnail — миниатюры в галерее (100x100 px);

Кроме того, WordPress создает стандартные размеры: thumbnail, medium, large. Плагины или тема могут добавлять свои размеры.

Диагностика: как проверить, какие размеры изображений создаются

Чтобы понять, какие размеры генерируются и какие реально используются, можно:

  • Проверить папку wp-content/uploads/YYYY/MM на наличие файлов с префиксами размеров;
  • Использовать плагин Regenerate Thumbnails для просмотра всех размеров, которые создаются;
  • В теме или плагинах найти вызовы add_image_size() — это показывает, какие дополнительные размеры добавлены.

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

wp media regenerate --only-missing --yes --path=/var/www/site

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

Пошаговое решение: как отключить ненужные размеры WooCommerce

Чтобы удалить ненужные размеры изображений WooCommerce, выполните следующие шаги:

  1. Отключите стандартные размеры WooCommerce: добавьте следующий код в functions.php вашей дочерней темы или в собственный плагин:
function wpweb_disable_wc_image_sizes() {
    remove_image_size('woocommerce_thumbnail');
    remove_image_size('woocommerce_single');
    remove_image_size('woocommerce_gallery_thumbnail');
}
add_action('init', 'wpweb_disable_wc_image_sizes', 20);

Этот код отменяет регистрацию размеров, но не удаляет уже созданные файлы.

  1. Отключите создание размеров в настройках WooCommerce: с версии WooCommerce 3.3+ можно настроить размеры через Консоль - WooCommerce - Настройки - Товары - Отображение. Установите минимальные значения или 0 для размеров, которые не нужны.
  2. Удалите лишние файлы изображений: используйте плагин Regenerate Thumbnails с опцией «Удалить старые размеры» или вручную удалите файлы из папки uploads.
  3. Очистите кэш и CDN: после удаления изображений убедитесь, что кэш браузера и CDN очищены, чтобы изменения отобразились.

Проверка результата после внедрения

Чтобы убедиться, что лишние размеры больше не создаются, выполните:

  • Загрузите новое изображение товара и проверьте папку uploads, нет ли лишних файлов с размерами, которые вы отключили.
  • В админке используйте Regenerate Thumbnails, чтобы проверить, какие размеры доступны для регенерации.
  • Просмотрите страницу товара через инспектор браузера — проверьте URL картинок, они должны соответствовать только нужным размерам.

Частые ошибки и как их исправить

  • Ошибка: Размеры не отключаются, файлы все равно создаются.
    Причина: Код отключения срабатывает слишком поздно или тема/плагин регистрирует размеры заново.
    Решение: Поднимите приоритет хука init до 20 или выше, проверьте, нет ли повторных вызовов add_image_size() в других плагинах.
  • Ошибка: Изображения на сайте отображаются некорректно после удаления размеров.
    Причина: Используются размеры, которые были удалены.
    Решение: Проверьте настройки темы и WooCommerce на использование нужных размеров, замените вызовы the_post_thumbnail() и wp_get_attachment_image() на существующие размеры.
  • Ошибка: Старые лишние изображения не удаляются при регенерации.
    Причина: Плагин Regenerate Thumbnails не настроен на удаление старых файлов.
    Решение: Используйте дополнительные плагины типа Force Regenerate Thumbnails или удаляйте вручную.

Практические советы по оптимизации и безопасности

  • Регулярно проверяйте папку uploads на накопление неиспользуемых размеров и удаляйте их.
  • Перед массовым удалением делайте резервную копию файлов и базы данных.
  • Настраивайте размеры изображений под реальные нужды вашего сайта, чтобы не перегружать сервер и не замедлять загрузку страниц.
  • Используйте функции WordPress wp_get_attachment_image_srcset() для адаптивных изображений, чтобы браузер выбирал оптимальный размер.
  • Если вы используете CDN, убедитесь, что после удаления старых изображений они удалены и с кэша CDN.

Сравнение способов отключения размеров WooCommerce

МетодПлюсыМинусы
Отключение через remove_image_size() в functions.phpБыстро, без плагинов, гибкоНе удаляет уже созданные файлы, возможны конфликты с плагинами
Отключение через настройки WooCommerceПростой интерфейс, официально поддерживаетсяНе всегда позволяет полностью отключить все размеры
Использование плагинов для управления размерамиАвтоматизация, удаление старых файловЗависимость от сторонних плагинов, нагрузка на сайт