Почему может потребоваться удаление изображений определённого размера в WooCommerce
WooCommerce генерирует несколько копий загруженных изображений для разных целей: миниатюры, каталоги, синглы и т.д. Со временем количество файлов на сервере растёт, особенно если вы меняете размеры изображений в настройках. Удаление ненужных размеров поможет сэкономить место и ускорить резервное копирование.
Диагностика: как определить, какие размеры изображений нужно удалить
Для начала выясним, какие именно размеры создаёт WooCommerce и какие из них не используются. В файле functions.php вашей темы или в плагине вы можете вывести список зарегистрированных размеров:
global $_wp_additional_image_sizes;
foreach ( get_intermediate_image_sizes() as $size ) {
if ( isset( $_wp_additional_image_sizes[ $size ] ) ) {
echo $size . ': ' . print_r( $_wp_additional_image_sizes[ $size ], true ) . "\n";
} else {
// базовые размеры
echo $size . ': width = ' . get_option( $size . '_size_w' ) . ', height = ' . get_option( $size . '_size_h' ) . "\n";
}
}Обратите внимание на размеры с префиксом woocommerce_ (например, woocommerce_thumbnail, woocommerce_single). Если вы изменяли настройки WooCommerce в Настройки > Продукты > Отображение (или в новых версиях в Customizer), некоторые размеры могли устареть.
Пошаговое решение: удаление файлов изображений по размеру без плагинов
1. Определяем размер файлов для удаления
Допустим, вы хотите удалить все миниатюры WooCommerce размером woocommerce_thumbnail.
2. Используем WP CLI для безопасного удаления
WP CLI — удобный инструмент для работы с медиафайлами. Запустите команду (в корне сайта):
wp media regenerate --yes --skip-delete --only-missingНо эта команда не удаляет, а восстанавливает отсутствующие. Поэтому для удаления вам понадобится скрипт на PHP.
3. PHP-скрипт для удаления файлов по размеру
Создайте временный файл remove-woo-thumbnails.php в корне сайта с таким содержимым:
<?php
require 'wp-load.php';
// Размер, который хотим удалить
$size_to_delete = 'woocommerce_thumbnail';
// Получаем все ID вложений
$attachments = get_posts([
'post_type' => 'attachment',
'posts_per_page' => -1,
'post_status' => 'inherit',
]);
foreach ($attachments as $attachment) {
$meta = wp_get_attachment_metadata($attachment->ID);
if (isset($meta['sizes'][$size_to_delete])) {
$upload_dir = wp_upload_dir();
$file_path = pathinfo(get_attached_file($attachment->ID));
$file_name = $meta['sizes'][$size_to_delete]['file'];
$full_path = $file_path['dirname'] . '/' . $file_name;
if (file_exists($full_path)) {
unlink($full_path);
echo "Deleted: $full_path\n";
// Удаляем размер из метаданных
unset($meta['sizes'][$size_to_delete]);
wp_update_attachment_metadata($attachment->ID, $meta);
}
}
}
echo "Удаление изображений размера '{$size_to_delete}' завершено.";
Запустите скрипт через браузер или консоль (php remove-woo-thumbnails.php). Скрипт удалит все файлы миниатюр и обновит метаданные вложений.
Проверка результата после удаления
- В папке
wp-content/uploadsубедитесь, что файлы с размеромwoocommerce_thumbnailотсутствуют. - В админке WordPress откройте любое изображение товара — миниатюры должны показываться корректно, без ошибок.
- Если используете кэширование, очистите кэш, чтобы увидеть результат.
Частые ошибки и как их исправить
- Ошибка: изображения не удаляются
Проверьте права на запись в папкеuploads. Скрипт должен иметь доступ к файлам. - Ошибка: миниатюры пропали из админки
Возможно, удалён нужный размер, а в шаблоне он вызывается. Подключите резервный размер или пересоздайте миниатюры командойwp media regenerate. - Ошибка: скрипт не запускается
Убедитесь, что подключенwp-load.phpи что запускаете скрипт в корне сайта.
Практические советы по производительности и безопасности
- Перед запуском скрипта сделайте резервную копию сайта и базы данных.
- Используйте WP CLI для массовых операций, если доступен серверу.
- Удаление лишних изображений уменьшит нагрузку на бэкапы и ускорит резервное копирование.
- Не удаляйте размеры, которые использует активная тема или плагины — это может привести к ошибкам отображения.
- Ограничьте доступ к скриптам удаления по IP или удалите их сразу после использования.
Сравнение вариантов удаления изображений WooCommerce
| Метод | Плюсы | Минусы |
|---|---|---|
| Плагины очистки (например, Regenerate Thumbnails) | Простота, безопасность, удобный интерфейс | Зависимость от сторонних инструментов, нагрузка во время работы |
| WP CLI | Быстро, без нагрузки на фронтенд, подходит для больших сайтов | Требует доступа к серверу и знаний командной строки |
| Собственный PHP-скрипт (описанный выше) | Гибкость, контроль над процессом | Риск ошибки при неправильном использовании, требует навыков разработки |