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

Почему важно удалять неиспользуемые медиафайлы в WordPress

Каждый сайт на WordPress со временем накапливает множество медиафайлов, которые уже не используются в контенте — это могут быть старые картинки, видео или документы. Такие файлы занимают место на сервере, замедляют резервное копирование и затрудняют управление сайтом. Особенно важно контролировать количество неиспользуемых медиафайлов на крупных ресурсах и магазинах, чтобы поддерживать быструю работу и экономить дисковое пространство.

Ручное удаление требует много времени и внимательности, а автоматизация процесса упрощает поддержку сайта и снижает риск ошибок. В статье рассмотрим, как создать систему автоматического удаления неиспользуемых медиафайлов, используя как готовые плагины, так и собственный код.

Использование плагинов для поиска и удаления неиспользуемых медиафайлов

Плагин Media Cleaner

Media Cleaner — один из популярных бесплатных и премиум плагинов, который сканирует библиотеку медиа WordPress и выявляет файлы, не связанные с записями, страницами, плагинами или темой. Он позволяет безопасно удалить «мусор» и освободить место.

Основные функции:

  • Глубокий анализ базы и файловой системы.
  • Поддержка популярных плагинов WooCommerce, ACF, WPML и других.
  • Возможность работать в режиме «безопасного удаления» с корзиной.

Для установки перейдите в админ-панель WordPress, в раздел "Плагины" → "Добавить новый", найдите Media Cleaner, установите и активируйте.

Плагин WPS Hide Login с функцией очистки

Хотя WPS Hide Login в основном для смены URL страницы входа, в составе WPShop есть плагин Clearfy Pro, который содержит модуль для оптимизации и очистки медиа. Он может автоматически удалять временные и неиспользуемые медиафайлы, делая сайт легче и безопаснее.

Подробнее о Clearfy Pro и его возможностях смотрите на wpshop.ru.

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

Алгоритм поиска неиспользуемых медиа

Для автоматизации удаления можно написать свой скрипт, который:

  1. Получает список всех медиафайлов из таблицы wp_posts с типом attachment.
  2. Проверяет, используется ли файл в записях, страницах, виджетах и других местах (например, в мета-полях или ACF).
  3. Формирует список неиспользуемых медиа.
  4. Удаляет эти файлы и записи из базы.

Важно тщательно проверять все связи, чтобы не удалить нужный контент.

Пример функции для поиска и удаления неиспользуемых медиафайлов

function wpacademy_find_and_delete_unused_media() {
    global $wpdb;
    // Получаем все ID вложений
    $attachments = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment'");
    
    foreach ($attachments as $attachment_id) {
        // Получаем URL файла
        $file_url = wp_get_attachment_url($attachment_id);
        if (!$file_url) continue;
        
        // Проверяем, используется ли файл в постах и мета
        $used = $wpdb->get_var($wpdb->prepare(
            "SELECT ID FROM {$wpdb->posts} WHERE (post_content LIKE %s OR post_excerpt LIKE %s) LIMIT 1",
            '%' . basename($file_url) . '%', '%' . basename($file_url) . '%'
        ));
        
        if (!$used) {
            // Файл не используется, удаляем
            wp_delete_attachment($attachment_id, true);
        }
    }
}

// Запускаем функцию раз в сутки через cron
if (!wp_next_scheduled('wpacademy_daily_media_cleanup')) {
    wp_schedule_event(time(), 'daily', 'wpacademy_daily_media_cleanup');
}
add_action('wpacademy_daily_media_cleanup', 'wpacademy_find_and_delete_unused_media');

Этот код создаёт ежедневное задание в WP-Cron, которое удаляет неиспользуемые вложения. Он проверяет только содержимое постов, поэтому при необходимости расширьте проверку на поля мета и другие места.

Расширение функционала: учёт ACF и WooCommerce

Если ваш сайт использует продвинутые плагины, например Advanced Custom Fields или WooCommerce, файлы могут храниться ссылками в нестандартных полях. Чтобы не удалить важные медиа, нужно расширить проверку:

  • Сканировать таблицу wp_postmeta на наличие ссылок на файлы.
  • Проверять JSON-форматированные поля ACF.
  • Учитывать файлы, привязанные к товарам WooCommerce.

Пример проверки мета-полей:

function wpacademy_is_media_used_in_meta($attachment_url) {
    global $wpdb;
    $like = '%' . basename($attachment_url) . '%';
    $result = $wpdb->get_var($wpdb->prepare(
        "SELECT meta_id FROM {$wpdb->postmeta} WHERE meta_value LIKE %s LIMIT 1",
        $like
    ));
    return !empty($result);
}

Интегрируйте эту проверку в основную функцию, чтобы избежать удаления важных файлов.

Практические рекомендации по безопасному удалению медиа

При автоматическом удалении учитывайте следующие моменты:

  • Всегда делайте резервную копию сайта и базы данных перед началом очистки.
  • Реализуйте механизм «корзины» — сначала перемещайте файлы в отдельную папку или помечайте для удаления, а спустя время удаляйте окончательно.
  • Тестируйте скрипты на тестовом сайте.
  • Используйте плагины с поддержкой и возможностью восстановления.

Использование WPRemark для уведомлений после очистки медиа

Если вы хотите отслеживать процесс удаления и информировать администраторов, можно интегрировать ваш код с плагином WPRemark. Этот плагин позволяет создавать уведомления и отчёты по действиям на сайте.

Например, после удаления файлов отправлять уведомление в админку или на email с количеством удалённых медиа.

Итог

Автоматическое удаление неиспользуемых медиафайлов помогает держать WordPress-сайт в порядке, снижает нагрузку на сервер и упрощает администрирование. Для реализации можно использовать проверенные плагины, такие как Media Cleaner или модули Clearfy Pro, либо написать свой код с учётом особенностей вашего сайта и используемых плагинов. Не забывайте делать резервные копии и тщательно тестировать все изменения.

Как избежать проблем с бесплатными темами WordPress: практические советы и примеры
02.02.2026
Как удалить пустые термины таксономий в WordPress
14.03.2026
Как удалить пустые категории в WordPress с помощью кода
21.03.2026
Как создать фильтры для товаров в WooCommerce без плагинов
19.01.2026
Как удалить неиспользуемые шорткоды в WordPress: пошаговое руководство
01.03.2026