Большинство сайтов на WordPress со временем накапливают большое количество медиафайлов: изображений, видео, документов. Многие из них уже не используются в контенте, занимают место на сервере и замедляют работу сайта. Ручное удаление таких файлов — трудоемкий и рискованный процесс. В этой статье рассмотрим, как автоматизировать удаление старых и неиспользуемых медиафайлов в WordPress, используя как готовые решения, так и собственные скрипты.
Почему важно удалять старые медиафайлы в WordPress
Медиафайлы занимают значительное место в хранилище сайта, особенно на больших проектах. Ненужные файлы приводят к:
- Увеличению размера бэкапов и времени их создания.
- Замедлению работы сайта из-за перегруженной базы данных и файловой системы.
- Росту затрат на хостинг, если тариф ограничен.
Автоматизация этого процесса помогает поддерживать сайт в чистоте без постоянного ручного контроля.
Как определить старые и неиспользуемые медиафайлы
Для автоматического удаления нужно сначала определить, какие файлы считаются «старыми» или «неиспользуемыми»:
- Неиспользуемые в контенте: медиафайлы, которые не вставлены в записи, страницы, виджеты и не подключены через кастомный код.
- Старые по дате загрузки: файлы, загруженные более определенного времени назад (например, 1 год), и при этом не используются.
Для этого можно использовать специальные плагины или написать свой скрипт, который будет проверять связи между медиафайлами и контентом.
Плагины для автоматического удаления старых медиафайлов
Рассмотрим несколько полезных плагинов, которые помогут в решении задачи:
1. Media Cleaner
Один из самых популярных плагинов для поиска и удаления неиспользуемых медиафайлов. Он сканирует базу данных и контент на наличие ссылок на медиафайлы и помечает те, что не используются.
Плагин поддерживает автоматическое удаление и создание отчетов.
2. WP Optimize
Хотя WP Optimize в первую очередь оптимизирует базу данных и кэш, он также включает инструменты для очистки неиспользуемых медиафайлов и ревизий.
3. Media Deduper
Этот плагин помогает находить дубликаты медиафайлов, которые тоже перегружают систему и место на диске. Можно удалить дубликаты, оставив только один экземпляр.
Автоматизация удаления через WP-Cron и кастомный код
Если вы хотите гибко настраивать процесс удаления, можно написать свой скрипт, который будет запускаться по расписанию с помощью WP-Cron.
Пример функции для удаления медиафайлов старше 1 года, не используемых в постах
function wpcourse_delete_old_unused_media() {
global $wpdb;
$one_year_ago = date('Y-m-d H:i:s', strtotime('-1 year'));
// Получаем ID медиафайлов, загруженных более года назад
$attachments = $wpdb->get_col($wpdb->prepare(
"SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment' AND post_date < %s",
$one_year_ago
));
foreach ($attachments as $attachment_id) {
// Проверяем, используется ли медиафайл в любом контенте
$file_url = wp_get_attachment_url($attachment_id);
$used = wpcourse_is_media_used($file_url);
if (!$used) {
wp_delete_attachment($attachment_id, true); // Удаляем полностью
}
}
}
function wpcourse_is_media_used($url) {
global $wpdb;
$like = '%' . esc_sql($url) . '%';
// Ищем ссылку на файл в содержимом постов
$count = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
$like
));
return $count > 0;
}
// Запускаем по расписанию
if (!wp_next_scheduled('wpcourse_daily_media_cleanup')) {
wp_schedule_event(time(), 'daily', 'wpcourse_daily_media_cleanup');
}
add_action('wpcourse_daily_media_cleanup', 'wpcourse_delete_old_unused_media');Эта функция ежедневно проверяет медиафайлы, загруженные более года назад, и удаляет те, которые не использованы в контенте. Вы можете изменить период и логику проверки под свои нужды.
Рекомендации по безопасности и резервному копированию
Перед автоматическим удалением файлов обязательно сделайте полное резервное копирование сайта и базы данных. Ошибочное удаление может повредить контент или привести к проблемам с отображением страниц.
Также рекомендуется сначала запускать скрипты в режиме «только проверка», чтобы видеть список файлов, которые будут удалены, без непосредственного удаления.
Использование WP-Course Expert Review для оценки плагинов очистки
Если вы хотите получить подробный обзор и сравнение плагинов для очистки медиа, обратите внимание на плагин Expert Review от WP-Course. Он позволяет создавать собственные рейтинги и отзывы, что удобно для выбора лучших инструментов под ваш проект.