С течением времени в медиатеке WordPress накапливается множество изображений, которые уже не используются на сайте. Они занимают ценное дисковое пространство и могут замедлять работу сервера и самого сайта. В этой статье мы подробно рассмотрим, как настроить автоматическое удаление таких старых и неиспользуемых изображений в WordPress, используя как готовые плагины, так и собственные решения на PHP.
Почему важно удалять старые изображения в WordPress
Во-первых, каждая картинка занимает место на хостинге, и при ограниченном дисковом пространстве накопление ненужных файлов может привести к проблемам с работой сайта и дополнительным расходам.
Во-вторых, большое количество файлов в медиатеке усложняет администрирование и поиск нужных изображений.
В-третьих, удаление неиспользуемых изображений помогает улучшить производительность сайта, так как уменьшает нагрузку при создании резервных копий и сканировании файлов.
Как определить неиспользуемые и старые изображения
Для начала нужно определить, какие изображения действительно не используются на сайте. Обычно это:
- Файлы, которые не вставлены в посты, страницы или виджеты.
- Файлы, на которые нет ссылок в базе данных.
- Файлы, загруженные давно и не изменявшиеся долгое время.
Для поиска таких файлов можно использовать SQL-запросы к базе данных или специальные плагины.
Использование плагина Media Cleaner
Один из популярных плагинов — Media Cleaner. Он сканирует медиатеку, выявляет неиспользуемые файлы и предлагает их удалить. Плагин поддерживает интеграцию с WooCommerce и другими популярными плагинами.
Однако бесплатная версия имеет ограничения, а для расширенных возможностей потребуется PRO версия.
Автоматизация удаления старых изображений с помощью кода
Если нужен гибкий и полностью подстроенный под сайт инструмент, можно написать кастомный скрипт, который будет регулярно удалять старые неиспользуемые изображения.
Ниже представлен пример функции wpmarket_auto_delete_old_images, которая ищет изображения, не используемые в записях, и удаляет их, если они были загружены более 180 дней назад.
function wpmarket_auto_delete_old_images() {
global $wpdb;
$days_threshold = 180; // количество дней
$date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days_threshold . ' days'));
// Получаем ID всех вложений типа image, загруженных до даты порога
$query = $wpdb->prepare(
"SELECT ID FROM $wpdb->posts WHERE post_type = 'attachment' AND post_mime_type LIKE 'image/%' AND post_date < %s",
$date_threshold
);
$attachments = $wpdb->get_col($query);
foreach ($attachments as $attachment_id) {
// Проверяем, используется ли вложение
$used = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM $wpdb->postmeta WHERE meta_value LIKE %s",
'%"' . $attachment_id . '"%'
));
if ($used == 0) {
// Удаляем вложение вместе с файлами
wp_delete_attachment($attachment_id, true);
}
}
}
// Запускаем функцию по cron раз в неделю
if (!wp_next_scheduled('wpmarket_weekly_image_cleanup')) {
wp_schedule_event(time(), 'weekly', 'wpmarket_weekly_image_cleanup');
}
add_action('wpmarket_weekly_image_cleanup', 'wpmarket_auto_delete_old_images');
Данный пример подходит для сайтов с небольшой нагрузкой. Для крупных проектов стоит предусмотреть логирование и обработку ошибок.
Советы по безопасному удалению изображений
Удаление файлов — операция необратимая, поэтому важно соблюдать меры предосторожности:
- Перед автоматическим удалением делайте резервные копии сайта и базы данных.
- Проверяйте, что скрипт не удаляет изображения, которые могут использоваться в нестандартных местах, например, в CSS или JS.
- Настраивайте скрипт сначала на вывод списка файлов для удаления, а потом — на непосредственное удаление.
Плагины для комплексной работы с медиафайлами на wp-market.ru
Помимо Media Cleaner можно рассмотреть плагины, доступные на WPShop.ru:
- Clearfy Pro — для оптимизации и очистки базы данных, включая медиа.
- WPRemark — помогает управлять комментариями и может быть полезен для удаления вложений из спам-комментариев.
Как дополнительно оптимизировать работу с изображениями
Удаление старых файлов — это только часть работы. Рекомендуется также:
- Автоматически сжимать новые изображения с помощью плагинов, например, Imagify, Smush или встроенных решений Clearfy Pro.
- Использовать CDN для быстрой загрузки и кеширования медиафайлов.
- Настроить правильные размеры изображений и использовать адаптивные теги
<img srcset>для разных устройств.
Таким образом, грамотное управление медиатекой поможет не только сэкономить место, но и повысить общую производительность сайта на WordPress.