Как автоматически удалять старые изображения в 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 по расписанию
13.02.2026
Как отключить e-mail уведомления от автоматических сообщений WordPress
22.02.2026
Как автоматически удалять товары из WooCommerce при низком запасе
02.06.2026
Как автоматически отключить отзывы на отдельных страницах WooCommerce
26.06.2026
Как использовать REST API WordPress для создания кастомных эндпоинтов
08.02.2026