Как автоматизировать удаление неиспользуемых медиафайлов в WordPress

Медиафайлы в 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.

Как добавить собственные типы постов в WordPress с подробным примером
31.12.2025
Как настроить автоматическое создание резервных копий в WordPress
18.12.2025
WooCommerce: автоматическая обработка возвратов через код — практическое руководство
03.06.2026
Как избежать проблем с пользовательскими ролями в WordPress
21.03.2026
Создание автоматической карты сайта (sitemap) в WordPress: пошаговое руководство
31.03.2026