Медиафайлы в WordPress — это не только изображения, но и видео, аудио, документы и прочие вложения, которые со временем накапливаются и занимают место на сервере. Особенно часто на сайтах остаются «мусорные» файлы, которые нигде не используются: удалённые из записей картинки, временные загрузки, неактуальные изображения из старых тем и плагинов. В этой статье разберём, как найти и автоматически удалить такие неиспользуемые медиафайлы, чтобы поддерживать сайт в оптимальном состоянии.
Почему важно удалять неиспользуемые медиафайлы
Каждый неиспользуемый файл — это нагрузка на дисковое пространство и резервные копии. Со временем их становится всё больше, и это может замедлять работу сайта, усложнять бэкапы и увеличивать стоимость хостинга. Если не контролировать медиа-библиотеку, можно столкнуться с проблемами:
- Переполнение диска и ошибки при загрузке новых файлов
- Увеличение времени создания бэкапов и восстановления
- Увеличение времени индексации сайта поисковиками
Поэтому регулярная очистка медиафайлов — важный этап технического обслуживания WordPress-сайта.
Как найти неиспользуемые медиафайлы в WordPress
Определить, какие файлы не используются, можно несколькими способами:
1. Сравнение базы данных и файловой системы
Все медиафайлы, загруженные через медиабиблиотеку, хранятся в папке wp-content/uploads. В базе данных они представлены в таблице wp_posts с типом записи attachment. Чтобы найти файлы, которые есть на диске, но не зарегистрированы в базе:
- Можно написать скрипт, который сравнит файлы в папке uploads с записями в базе.
- Но это только половина задачи — нужно ещё проверить, используются ли эти файлы в контенте сайта (постах, страницах, виджетах и т.д.).
2. Поиск ссылок на медиафайлы в контенте
Для этого можно проанализировать содержимое постов, страниц и других кастомных типов записей на предмет использования URL медиафайлов. Если ссылка отсутствует — файл можно считать неиспользуемым.
3. Использование плагинов для помощи
Существуют плагины, которые автоматизируют этот процесс и предоставляют удобный интерфейс:
- Clearfy Pro — расширенный инструмент оптимизации, который помогает находить и удалять неиспользуемые файлы.
- Media Cleaner — бесплатный плагин, который сканирует медиафайлы и показывает, какие из них не используются.
- WPRemark — помогает создавать отчёты и автоматизировать удаление устаревших данных.
Как автоматизировать удаление с помощью кода
Если хочется пойти дальше и реализовать автоматическую очистку без постоянного ручного контроля, можно написать функцию, которая будет запускаться по крону и удалять неиспользуемые медиафайлы. Ниже пример такой функции для вашего сайта на WordPress, с префиксом wpeasy для предотвращения конфликтов:
function wpeasy_get_unused_attachments() {
global $wpdb;
// Получаем все ID вложений
$attachment_ids = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment'");
$unused = [];
foreach ($attachment_ids as $id) {
$url = wp_get_attachment_url($id);
if (!$url) continue;
// Проверяем, используется ли файл в контенте
$count = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
'%' . $wpdb->esc_like($url) . '%'
));
if ($count == 0) {
$unused[] = $id;
}
}
return $unused;
}
function wpeasy_delete_unused_attachments() {
$unused = wpeasy_get_unused_attachments();
foreach ($unused as $id) {
wp_delete_attachment($id, true); // true — удалять физический файл
}
}
// Добавляем задачу в WP-Cron, чтобы запускать раз в неделю
if (!wp_next_scheduled('wpeasy_cleanup_unused_media')) {
wp_schedule_event(time(), 'weekly', 'wpeasy_cleanup_unused_media');
}
add_action('wpeasy_cleanup_unused_media', 'wpeasy_delete_unused_attachments');Этот код сканирует все вложения, проверяет, есть ли на них ссылки в содержимом сайта, и если нет — удаляет. Для безопасности можно сначала запускать функцию wpeasy_get_unused_attachments() и просматривать список, а потом уже включать автоматическое удаление.
Советы по безопасности и резервному копированию
Перед автоматическим удалением файлов всегда делайте резервную копию сайта и базы данных. Ошибки в логике могут привести к удалению нужных медиа или повреждению контента. Рекомендуется сначала тестировать на копии сайта.
Также рекомендуем использовать плагин Clearfy Pro, который умеет не только находить неиспользуемые файлы, но и предлагает дополнительные инструменты для оптимизации и безопасности WordPress.
Как интегрировать с WPRemark для автоматических отчётов
Чтобы следить за состоянием медиафайлов и получать уведомления о неиспользуемых файлах, можно интегрировать автоматическую проверку с плагином WPRemark. Это позволит создавать отчёты и получать их на email с расписанием, что удобно для постоянного мониторинга.
Пример вызова создания отчёта (зависит от API плагина):
// Примерный код, адаптация под WPRemark
function wpeasy_send_media_report() {
$unused = wpeasy_get_unused_attachments();
if (empty($unused)) {
return;
}
$message = "Найдены неиспользуемые медиафайлы (ID): " . implode(", ", $unused);
wp_mail('admin@example.com', 'Отчёт по неиспользуемым медиафайлам', $message);
}
add_action('weekly', 'wpeasy_send_media_report');Выводы и рекомендации
Автоматизация удаления неиспользуемых медиафайлов в WordPress — важный элемент поддержания чистоты и оптимизации сайта. Комбинация плагинов и кастомных решений позволяет быстро и безопасно очищать ненужные файлы без риска повредить контент.
Используйте предоставленный пример кода как основу, адаптируйте под свои задачи, обязательно тестируйте на копии сайта и подключайте инструменты мониторинга, например, WPRemark и Clearfy Pro.