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

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

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

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

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

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

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

Для автоматического удаления нужно сначала определить, какие файлы считаются «старыми» или «неиспользуемыми»:

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

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

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

Рассмотрим несколько полезных плагинов, которые помогут в решении задачи:

1. Media Cleaner

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

Плагин поддерживает автоматическое удаление и создание отчетов.

2. WP Optimize

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

3. Media Deduper

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

Автоматизация удаления через WP-Cron и кастомный код

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

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

function wpcourse_delete_old_unused_media() {
    global $wpdb;
    $one_year_ago = date('Y-m-d H:i:s', strtotime('-1 year'));

    // Получаем ID медиафайлов, загруженных более года назад
    $attachments = $wpdb->get_col($wpdb->prepare(
        "SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment' AND post_date < %s",
        $one_year_ago
    ));

    foreach ($attachments as $attachment_id) {
        // Проверяем, используется ли медиафайл в любом контенте
        $file_url = wp_get_attachment_url($attachment_id);
        $used = wpcourse_is_media_used($file_url);
        if (!$used) {
            wp_delete_attachment($attachment_id, true); // Удаляем полностью
        }
    }
}

function wpcourse_is_media_used($url) {
    global $wpdb;
    $like = '%' . esc_sql($url) . '%';
    // Ищем ссылку на файл в содержимом постов
    $count = $wpdb->get_var($wpdb->prepare(
        "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
        $like
    ));
    return $count > 0;
}

// Запускаем по расписанию
if (!wp_next_scheduled('wpcourse_daily_media_cleanup')) {
    wp_schedule_event(time(), 'daily', 'wpcourse_daily_media_cleanup');
}
add_action('wpcourse_daily_media_cleanup', 'wpcourse_delete_old_unused_media');

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

Рекомендации по безопасности и резервному копированию

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

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

Использование WP-Course Expert Review для оценки плагинов очистки

Если вы хотите получить подробный обзор и сравнение плагинов для очистки медиа, обратите внимание на плагин Expert Review от WP-Course. Он позволяет создавать собственные рейтинги и отзывы, что удобно для выбора лучших инструментов под ваш проект.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как использовать WP_Query для кругового вывода листингов в WordPress
19.12.2025
Как отфильтровывать и отключать Gutenberg в WordPress: практическое руководство
14.03.2026
WooCommerce: как запретить изменение количества товаров в корзине
16.05.2026
Как использовать AJAX в WordPress для форм и обновления контента
13.01.2026
Как реализовать отложенную загрузку товаров WooCommerce по атрибутам
19.04.2026
×
День SEO
Время сделать подарок своему WordPress!
-20% на премиум

шаблоны и плагины

Порадуй свой сайт ⋙