Со временем в библиотеке медиа WordPress накапливается огромное количество файлов: изображения, видео, аудио и другие документы. Многие из них уже не используются на сайте, занимают место на хостинге и могут замедлять работу сайта, особенно при резервном копировании и обновлениях. В этой статье мы подробно разберём, как автоматически находить и удалять старое медиа-содержимое в WordPress, чтобы поддерживать чистоту и оптимизацию вашего сайта.
Почему важно удалять неиспользуемые медиафайлы
С течением времени в WordPress накапливаются медиафайлы, которые больше не используются в записях, страницах или виджетах. Это может происходить по разным причинам: удаление постов без удаления прикреплённых файлов, замена изображений, временные загрузки и т.д.
Накопление таких файлов ведёт к следующим проблемам:
- Занимается лишнее место на сервере, что особенно критично при ограниченном хостинге.
- Замедляется процесс резервного копирования, так как копируются ненужные данные.
- Увеличивается время сканирования и индексации файлов при обновлении плагинов или тем.
Таким образом, регулярное удаление старых, неиспользуемых медиафайлов — важный элемент технической оптимизации WordPress.
Как определить, какие медиафайлы не используются
В WordPress нет встроенной функции, которая автоматически находит и удаляет неиспользуемые медиафайлы. Однако есть несколько способов определить такие файлы:
Использование плагинов для поиска неиспользуемого медиа
Существуют плагины, которые анализируют базу данных и контент сайта, чтобы выявить медиафайлы, не привязанные к записям или страницам. Например:
- Media Cleaner — позволяет сканировать библиотеку и помечать ненужные файлы для удаления.
- Clearfy Pro — оптимизационный плагин с функцией очистки базы и медиа.
Эти плагины удобны, но требуют ручного подтверждения удаления, чтобы избежать случайной потери нужных файлов.
Поиск вручную через базу данных
Можно составить SQL-запросы, которые ищут медиафайлы без связи с публикациями. Например, метаданные в таблице wp_postmeta или связь с записями в wp_posts типа attachment. Однако это требует опыта работы с базой данных и осторожности.
Как настроить автоматическое удаление старых медиафайлов без плагинов
Если вы хотите автоматизировать удаление неиспользуемых медиафайлов с помощью кода, можно реализовать функционал, который:
- Находит медиафайлы, не прикреплённые к постам, и загруженные ранее определённого срока (например, старше 180 дней).
- Удаляет эти файлы из базы данных и файловой системы.
Ниже пример функции для файла functions.php вашей темы или в отдельном плагине:
function wpfront_delete_old_unused_media() {
global $wpdb;
$days = 180; // количество дней, старше которых файл считается устаревшим
$date_threshold = date('Y-m-d H:i:s', strtotime("-" . $days . " days"));
// Получаем ID вложений, которые не прикреплены к записям и старше threshold
$attachments = $wpdb->get_col($wpdb->prepare(
"SELECT ID FROM {$wpdb->posts}
WHERE post_type = 'attachment'
AND post_parent = 0
AND post_date < %s",
$date_threshold
));
foreach ($attachments as $attachment_id) {
// Проверяем, используется ли вложение в контенте (например, в мета или постах)
$usage_count = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->postmeta} WHERE meta_value LIKE %s",
'%' . $attachment_id . '%'
));
if ($usage_count == 0) {
// Удаляем вложение и файл
wp_delete_attachment($attachment_id, true);
}
}
}
// Запускаем функцию раз в сутки с помощью WP Cron
if (!wp_next_scheduled('wpfront_daily_cleanup')) {
wp_schedule_event(time(), 'daily', 'wpfront_daily_cleanup');
}
add_action('wpfront_daily_cleanup', 'wpfront_delete_old_unused_media');В этом примере мы находим вложения без родительских записей (не прикреплённые) и старше 180 дней, проверяем, не используются ли они в метаданных, и удаляем. Запуск происходит автоматически раз в сутки через WP Cron.
Обязательно тестируйте такой код на тестовом сайте, чтобы не удалить нужные файлы!
Использование плагина Clearfy Pro для автоматизации очистки медиа
Плагин Clearfy Pro предлагает удобные инструменты для удаления неиспользуемых медиафайлов с возможностью планирования и автоматизации.
Основные возможности:
- Автоматический поиск и удаление неиспользуемых изображений и других файлов.
- Интеграция с WP Cron для запуска по расписанию.
- Возможность создавать резервные копии перед удалением.
- Гибкие настройки фильтрации по дате загрузки, размеру и типу файлов.
Это отличный вариант для тех, кто не хочет углубляться в код, но хочет надежное и безопасное решение.
Как избежать ошибок при удалении медиафайлов
Удаление медиа — ответственный процесс, чтобы не повредить контент сайта. Вот несколько рекомендаций:
- Всегда делайте резервную копию сайта и базы данных перед массовыми операциями.
- Тестируйте процесс сначала на копии сайта или локальной среде.
- Проверяйте использование файлов не только в стандартных местах (посты, страницы), но и в виджетах, настройках плагинов, пользовательских полях.
- Используйте плагины с подтверждением удаления для уменьшения риска случайных ошибок.
Если используете собственный код — добавьте логи и отправку уведомлений для контроля.
Дополнительные советы по оптимизации библиотеки медиа
Кроме удаления старых файлов, рекомендуем регулярно:
- Оптимизировать изображения с помощью плагинов, например, Clearfy Pro или EWWW Image Optimizer.
- Использовать CDN для хранения и доставки медиа.
- Регулярно обновлять и чистить кэш сайта.
Эти меры помогут поддерживать высокую скорость загрузки и стабильность работы WordPress.