Как автоматически удалять старые изображения в WordPress по расписанию

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

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

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

Ручное удаление — трудоемкий процесс, особенно если сайт большой. Автоматизация с помощью WP Cron и кастомных функций решает эту проблему.

Использование WP Cron для автоматического удаления старых изображений

WordPress имеет встроенную систему планировщика задач — WP Cron. С ее помощью можно создавать регулярные события, например, раз в день запускать функцию, которая будет искать и удалять файлы, не используемые более определенного времени.

Создаем функцию удаления

Пример функции wpelement_delete_old_images, которая удаляет изображения старше 30 дней и не привязанные к постам:

function wpelement_delete_old_images() {
    global $wpdb;
    $days = 30; // Количество дней для хранения изображений
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

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

    foreach ($attachments as $attachment) {
        $id = $attachment->ID;
        // Проверяем, используется ли изображение в каких-либо постах
        $is_used = wpelement_is_image_used($id);
        if (!$is_used) {
            wp_delete_attachment($id, true); // Удаляем навсегда
        }
    }
}

function wpelement_is_image_used($attachment_id) {
    global $wpdb;
    $attachment_url = wp_get_attachment_url($attachment_id);
    if (!$attachment_url) return false;

    // Ищем в контенте постов упоминания URL изображения
    $like = '%' . $wpdb->esc_like($attachment_url) . '%';
    $count = $wpdb->get_var($wpdb->prepare(
        "SELECT COUNT(*) FROM $wpdb->posts WHERE post_content LIKE %s AND post_status = 'publish'",
        $like
    ));

    return ($count > 0);
}

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

Добавляем задачу в WP Cron

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

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

add_action('wpelement_daily_image_cleanup', 'wpelement_delete_old_images');

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

Плагины для удаления неиспользуемых изображений

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

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

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

Рекомендации по безопасности и бэкапам

Удаление медиафайлов — операция, которая может повлиять на отображение сайта. Рекомендуется:

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

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

Заключение

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

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

Как удалить неактивных пользователей в WordPress: эффективные методы и примеры
19.11.2025
Как создать настраиваемую настройку темы WordPress в панели администратора
12.01.2026
Как создать и настроить круговое меню в WordPress без плагинов
04.01.2026
Как создать динамическую таблицу в WordPress с помощью AJAX
25.12.2025
Как автоматически отключить отзывы на отдельных страницах WooCommerce
15.05.2026