Каждый WordPress-сайт со временем накапливает большое количество медиафайлов, многие из которых могут стать неактуальными и неиспользуемыми. Это увеличивает нагрузку на сервер, расходует дисковое пространство и замедляет работу сайта. В этой статье мы подробно разберём, как настроить автоматическое удаление старых и неиспользуемых медиафайлов в WordPress, чтобы поддерживать чистоту и оптимизировать работу вашего сайта.
Почему важно удалять старые медиафайлы в WordPress
Медиафайлы, такие как изображения, видео и документы, занимают значительный объём дискового пространства. С каждым новым постом или страницей в WordPress, особенно если активно используются визуальные элементы, размер папки wp-content/uploads растёт. Часто файлы остаются на сервере даже после удаления записей, где они использовались, или после замены изображений.
Накопление таких файлов приводит к нескольким проблемам:
- Увеличение времени бэкапа и восстановления сайта;
- Рост затрат на хостинг из-за необходимости большего дискового пространства;
- Потенциальные проблемы с безопасностью, если устаревшие файлы содержат уязвимости;
- Замедление работы сайта из-за увеличенной нагрузки на файловую систему.
Поэтому регулярное удаление неиспользуемых и старых медиафайлов — важная задача для каждого администратора WordPress.
Поиск и удаление неиспользуемых медиафайлов с помощью плагинов
Самый простой способ обнаружить и удалить неиспользуемые медиафайлы — воспользоваться специализированными плагинами. Рассмотрим несколько популярных решений.
Плагин Media Cleaner
Media Cleaner позволяет сканировать библиотеку медиафайлов и выявлять те, которые не связаны с вашими страницами, постами или плагинами. Плагин совместим с WooCommerce, Advanced Custom Fields, WPML и другими популярными расширениями.
- Плюсы: простой интерфейс, поддержка различных типов контента.
- Минусы: некоторые возможности доступны только в PRO-версии.
После сканирования вы можете безопасно удалять неиспользуемые файлы прямо из админки.
Плагин WP-Optimize
Хотя WP-Optimize в первую очередь предназначен для оптимизации базы данных, он также включает функции по очистке медиа-библиотеки от неиспользуемых файлов. Это удобно для комплексного обслуживания сайта.
Автоматизация удаления старых медиафайлов с помощью собственного кода
Если вы предпочитаете более гибкий и контролируемый подход, можно написать собственный код, который будет автоматически удалять медиафайлы, не использующиеся в течение определённого времени.
Пример функции для удаления неиспользуемых медиафайлов старше 30 дней
function wpacademy_delete_unused_media_older_than_30_days() {
global $wpdb;
$date_threshold = date('Y-m-d H:i:s', strtotime('-30 days'));
// Получаем ID вложений (attachment), которые не используются в постах
$unused_attachments = $wpdb->get_col($wpdb->prepare(
"SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment' AND post_date < %s",
$date_threshold
));
foreach ($unused_attachments as $attachment_id) {
$meta = get_post_meta($attachment_id, '_wp_attachment_metadata', true);
// Проверяем, используется ли файл где-либо
$is_used = false;
// Поиск по содержимому постов и метаданным
$count = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
'%' . get_attached_file($attachment_id) . '%'
));
if ($count > 0) {
$is_used = true;
}
if (!$is_used) {
wp_delete_attachment($attachment_id, true);
}
}
}
// Запускаем функцию раз в сутки
if (!wp_next_scheduled('wpacademy_daily_media_cleanup')) {
wp_schedule_event(time(), 'daily', 'wpacademy_daily_media_cleanup');
}
add_action('wpacademy_daily_media_cleanup', 'wpacademy_delete_unused_media_older_than_30_days');
Этот пример создаёт ежедневное событие, которое проверяет медиафайлы старше 30 дней и удаляет те, которые не используются в постах. Важно тестировать такой код на тестовом сервере, чтобы избежать случайного удаления нужных файлов.
Как интегрировать очистку медиа с плагином Clearfy Pro
Плагин Clearfy Pro предлагает расширенные инструменты для оптимизации сайта, включая автоматическую очистку базы данных и медиа. В Clearfy есть функции, которые позволяют находить и удалять неиспользуемые изображения и другие файлы без риска повредить контент.
Для включения автоматического удаления медиафайлов в Clearfy Pro достаточно активировать соответствующую опцию в разделе оптимизации, а затем настроить расписание и фильтры по возрасту файлов.
Рекомендации и меры предосторожности при удалении медиафайлов
Удаление медиафайлов — потенциально рискованная операция, так как можно случайно удалить нужные файлы, что приведёт к поломке страниц или постов. Чтобы избежать проблем, следуйте нескольким советам:
- Всегда делайте полный бэкап сайта и базы данных перед очисткой;
- Используйте плагин для предварительного сканирования и просмотра списка файлов к удалению;
- Тестируйте автоматические скрипты на тестовом сервере;
- Если используете собственный код, добавьте логирование действий и возможность отмены удаления;
- Периодически проверяйте состояние сайта после очистки, чтобы убедиться, что всё работает корректно.
Заключение
Оптимизация медиафайлов в WordPress — важная часть поддержания сайта в хорошем состоянии. Автоматическое удаление старых и неиспользуемых медиафайлов помогает снизить нагрузку на хостинг, ускорить работу сайта и упростить управление контентом. Используйте проверенные плагины или собственные скрипты, соблюдайте меры предосторожности, и ваш сайт будет работать быстро и эффективно.