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

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

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

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

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

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

Как определить, какие медиа-файлы устарели

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

Типичные подходы:

  • Удаление файлов, не присоединённых ни к одному посту (orphaned media);
  • Удаление файлов, которые не использовались в контенте в течение определённого времени (например, 6 месяцев);
  • Удаление файлов по определённым метаданным или размерам.

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

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

  • Media Cleaner — анализирует базу данных и медиа-библиотеку, находит неиспользуемые файлы и предлагает их удалить. Есть как бесплатная версия, так и Pro с расширенными функциями.
  • DNUI (Delete Not Used Image) — простой плагин для удаления изображений, не используемых на сайте.
  • WPSClean — комплексный плагин для очистки базы данных и медиа.

Для интеграции с вашим сайтом на wplab.ru рекомендую попробовать Media Cleaner с расширенными настройками и возможностью автоматизации очистки.

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

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

Создание cron-задачи для удаления медиа-файлов

Ниже пример кода, который удаляет из библиотеки вложения старше 180 дней, если они не привязаны к постам или страницам.

function wplab_delete_old_unused_media() {
    global $wpdb;
    $days = 180; // количество дней
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    // Получаем ID вложений, которые загружены раньше даты и не прикреплены к постам
    $attachments = $wpdb->get_col($wpdb->prepare(
        "SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment' AND post_date < %s AND post_parent = 0",
        $date_threshold
    ));

    foreach ($attachments as $attachment_id) {
        // Дополнительно проверим, не используется ли файл в контенте других постов
        $file_url = wp_get_attachment_url($attachment_id);
        $count = $wpdb->get_var($wpdb->prepare(
            "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
            '%' . $wpdb->esc_like($file_url) . '%'
        ));
        
        if (intval($count) === 0) {
            wp_delete_attachment($attachment_id, true); // удаляем навсегда
        }
    }
}

// Регистрируем cron задачу на ежедневный запуск
if (!wp_next_scheduled('wplab_daily_media_cleanup')) {
    wp_schedule_event(time(), 'daily', 'wplab_daily_media_cleanup');
}
add_action('wplab_daily_media_cleanup', 'wplab_delete_old_unused_media');

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

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

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

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

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

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

Лучшие практики для работы с медиа в WordPress

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

  • Регулярно проверяйте медиа-библиотеку на предмет неиспользуемых файлов;
  • Используйте плагин для оптимизации изображений и автоматической очистки (например, Media Cleaner или Clearfy Pro);
  • Автоматизируйте процесс с помощью cron-задач и кастомных функций;
  • Обязательно создавайте резервные копии перед массовым удалением;
  • Контролируйте размер и формат загружаемых файлов для экономии места.

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

Как создать автоматический импорт продуктов из CSV в WooCommerce с помощью кода
12.03.2026
Как изменить роли пользователей в WordPress без плагинов
09.01.2026
Как создать собственный шорткод в WordPress с применением WPLab
06.11.2025
Как автоматически удалять старые медиа-файлы в WordPress
07.03.2026
Как удалить автоматически созданные изображения в WordPress
31.12.2025