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

Любой сайт на WordPress со временем накапливает большое количество медиафайлов — изображений, видео, аудио и других вложений. Многие из них перестают использоваться: картинки удалённых постов, черновики, временные файлы и пр. Такие неиспользуемые медиафайлы занимают место на сервере, замедляют резервное копирование и ухудшают производительность. В этой статье рассмотрим, как автоматически находить и удалять неиспользуемые медиафайлы в WordPress с помощью плагинов и кастомного кода.

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

Медиафайлы — это часто самые «тяжёлые» элементы сайта. Со временем их число может вырасти до тысяч, даже если они уже не нужны. Основные проблемы неиспользуемых медиаданных:

  • Занятое место на диске: лишние файлы увеличивают размер бэкапов и требуют больше дискового пространства.
  • Потеря производительности: хоть сам WordPress напрямую не тормозит, но операции с большим числом файлов (например, резервное копирование, сканирование безопасности) занимают больше времени.
  • Путаница и сложность управления: тяжело ориентироваться в медиатеке, если там много мусора.

Регулярное удаление неиспользуемых файлов помогает содержать сайт в порядке и экономит ресурсы.

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

В каталоге WordPress доступно несколько плагинов, которые помогают решать эту задачу. Вот самые популярные и эффективные:

1. Media Cleaner

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

  • Поддерживает работу с популярными плагинами и конструкторами страниц.
  • Позволяет безопасно удалять файлы или перемещать их в карантин.
  • Имеет платную версию с расширенными возможностями.

Скачать и узнать подробнее можно на официальной странице плагина.

2. WP-Optimize

Этот плагин более универсальный, но включает функцию очистки неиспользуемых медиафайлов. WP-Optimize позволяет удалять временные файлы, оптимизировать базу данных и очищать медиатеку от мусора.

3. DNUI (Delete Not Used Image)

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

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

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

Основной принцип — перебрать вложения из медиатеки, проверить, встречается ли URL файла в базе данных (в постах, метаданных и т.д.), и если нет — удалить.

Пример функции wpdeveloper_delete_unused_media()

function wpdeveloper_delete_unused_media() {
    global $wpdb;
    // Получаем все вложения
    $attachments = get_posts(array(
        'post_type'      => 'attachment',
        'posts_per_page' => -1,
        'post_status'    => 'inherit',
    ));

    foreach ($attachments as $attachment) {
        $url = wp_get_attachment_url($attachment->ID);
        $url_escaped = esc_sql($url);

        // Ищем встречается ли URL в содержимом постов и метаданных
        $count = $wpdb->get_var($wpdb->prepare(
            "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
            '%' . $wpdb->esc_like($url) . '%'
        ));

        if ($count == 0) {
            // Проверяем метаданные
            $meta_count = $wpdb->get_var($wpdb->prepare(
                "SELECT COUNT(*) FROM {$wpdb->postmeta} WHERE meta_value LIKE %s",
                '%' . $wpdb->esc_like($url) . '%'
            ));

            if ($meta_count == 0) {
                // Удаляем файл вместе с записью
                wp_delete_attachment($attachment->ID, true);
                error_log('Удалён неиспользуемый файл: ' . $url);
            }
        }
    }
}

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

Как избежать ошибок и потерь важных файлов при удалении

Удаление медиафайлов — задача деликатная, поскольку можно случайно удалить файлы, которые используются нестандартно (например, через JavaScript, внешние плагины, кастомные поля).

Чтобы минимизировать риски:

  • Делайте резервные копии перед массовым удалением.
  • Используйте плагины с карантином (например, Media Cleaner), чтобы сначала проверить список файлов.
  • Тестируйте скрипты на копии сайта или в безопасной среде.
  • Проверяйте логи, чтобы понять, какие файлы были удалены.

Автоматизация процесса: запуск по расписанию через WP-Cron

Чтобы регулярно очищать медиатеку, можно настроить запуск функции удаления по расписанию.

function wpdeveloper_schedule_media_cleanup() {
    if (!wp_next_scheduled('wpdeveloper_media_cleanup_hook')) {
        wp_schedule_event(time(), 'daily', 'wpdeveloper_media_cleanup_hook');
    }
}
add_action('wp', 'wpdeveloper_schedule_media_cleanup');

add_action('wpdeveloper_media_cleanup_hook', 'wpdeveloper_delete_unused_media');

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

Выводы и рекомендации

Автоматическое удаление неиспользуемых медиафайлов — важный этап технического обслуживания сайта на WordPress. Плагины, такие как Media Cleaner, значительно упрощают процесс и минимизируют риски. Если нужна кастомизация, можно использовать собственные функции с проверкой использования файлов в базе данных.

Обязательно делайте резервные копии и тестируйте любые удаления, чтобы не потерять важные данные. Регулярное поддержание медиатеки помогает ускорить сайт и упростить администрирование.

Для удобной работы с сайтом на WordPress рекомендую ознакомиться с плагином Clearfy Pro, который содержит множество функций по оптимизации и очистке сайта, включая работу с медиа.

Автоматическое удаление старых записей WordPress по значению метаполя
22.01.2026
Как установить и настроить Redis кэш в WordPress для ускорения сайта
25.01.2026
Как использовать REST API в WordPress для создания настраиваемых запросов
17.11.2025
Как создать автоматические ответы в комментариях WordPress
30.12.2025
Безопасные автообновления WordPress: настройка и контроль
29.11.2025