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

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

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

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

Регулярное удаление устаревших файлов помогает:

  • Освободить место на сервере;
  • Улучшить скорость бэкапов и восстановления;
  • Снизить нагрузку на систему резервного копирования;
  • Поддерживать порядок в медиа-библиотеке;
  • Минимизировать риски безопасности, связанные с неиспользуемыми файлами.

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

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

Можно использовать следующие критерии для определения «старых» файлов:

  • Файлы, не привязанные ни к одному посту, странице или пользовательскому типу записи (Custom Post Type);
  • Файлы, которые не используются в виджетах, меню или настройках темы;
  • Файлы, которые были загружены более определенного срока назад (например, 6 месяцев);
  • Резервные копии и временные файлы, которые создаются плагинами и не удаляются автоматически.

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

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

1. Media Cleaner

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

Плюсы:

  • Безопасный режим с возможностью перемещения файлов в корзину перед удалением;
  • Поддержка Custom Post Types и сложных конструкций;
  • Интеграция с WooCommerce и другими плагинами.

Минус — в бесплатной версии нет некоторых функций, например, очистки файлов, используемых плагинами.

2. WP-Optimize

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

Использование WP-Optimize позволяет комплексно ухаживать за сайтом, включая удаление устаревших данных и кэшированных файлов.

3. Очистка вручную с помощью плагина FileBird + Query Monitor

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

Пример кода для автоматического удаления файлов старше определенного срока

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

function wpbegin_delete_old_uploads() {
    $days = 180; // количество дней, старше которых файлы будут удалены
    $cutoff = strtotime('-' . $days . ' days');

    $args = array(
        'post_type'      => 'attachment',
        'post_status'    => 'inherit',
        'posts_per_page' => -1,
        'date_query'     => array(
            array(
                'column' => 'post_date',
                'before' => date('Y-m-d H:i:s', $cutoff),
            ),
        ),
        'fields' => 'ids',
    );

    $old_attachments = get_posts($args);

    foreach ($old_attachments as $attachment_id) {
        // Проверяем, используется ли файл в контенте
        $file_url = wp_get_attachment_url($attachment_id);
        $content = get_posts(array('s' => basename($file_url), 'fields' => 'ids', 'post_status' => 'any'));
        if (empty($content)) {
            wp_delete_attachment($attachment_id, true);
        }
    }
}

// Добавляем задачу в WP-Cron для ежедневного запуска
if (! wp_next_scheduled('wpbegin_daily_delete_old_uploads')) {
    wp_schedule_event(time(), 'daily', 'wpbegin_daily_delete_old_uploads');
}
add_action('wpbegin_daily_delete_old_uploads', 'wpbegin_delete_old_uploads');

Этот код:

  • Ищет вложения (attachments), загруженные более 180 дней назад;
  • Проверяет, используется ли файл в других записях;
  • Удаляет файл, если он не используется;
  • Запускает эту функцию ежедневно через WP-Cron.

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

Как интегрировать очистку с плагинами WPShop

Если вы используете на сайте продукты WPShop, например, WPRemark для отзывов или My Popup для всплывающих окон, то важно учитывать, что они тоже могут создавать временные медиа или кэшировать файлы.

Рекомендуется:

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

Дополнительные рекомендации по работе с файлами в WordPress

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

  • Регулярно проверять медиа-библиотеку на наличие дублей и неиспользуемых файлов;
  • Очищать временные файлы, создаваемые плагинами и темами;
  • Использовать CDN и оптимизаторы изображений, чтобы снизить нагрузку на сервер;
  • Создавать резервные копии перед массовыми удалениями;
  • Настраивать WP-Cron для периодического запуска задач очистки.
Как создать выбор фильтра на AJAX в WordPress
09.01.2026
Как использовать WPRemark для автоматического отзыва на WordPress
22.02.2026
WooCommerce: как автоматически удалять товары после отмены заказа
01.06.2026
Как удалить или изменить автора постов в WordPress
24.03.2026
Как создать пользовательские роли и права в WordPress без плагинов
06.03.2026