Почему 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, выполните следующие шаги:
- Отключите стандартные размеры 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);Этот код отменяет регистрацию размеров, но не удаляет уже созданные файлы.
- Отключите создание размеров в настройках WooCommerce: с версии WooCommerce 3.3+ можно настроить размеры через Консоль - WooCommerce - Настройки - Товары - Отображение. Установите минимальные значения или 0 для размеров, которые не нужны.
- Удалите лишние файлы изображений: используйте плагин Regenerate Thumbnails с опцией «Удалить старые размеры» или вручную удалите файлы из папки uploads.
- Очистите кэш и 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 | Простой интерфейс, официально поддерживается | Не всегда позволяет полностью отключить все размеры |
| Использование плагинов для управления размерами | Автоматизация, удаление старых файлов | Зависимость от сторонних плагинов, нагрузка на сайт |