Автоматическое удаление старых изображений в WordPress для оптимизации сайта

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

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

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

Удаление таких изображений вручную — трудоёмкий и рискованный процесс, особенно на больших сайтах. Автоматизация этой задачи позволит:

  • Регулярно очищать медиатеку от «мусора»;
  • Избежать ошибок при удалении нужных изображений;
  • Оптимизировать расход дискового пространства;
  • Повысить скорость работы сайта и резервного копирования.

Автоматизация удаления старых изображений: подходы и инструменты

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

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

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

Другой вариант — Media Cleaner, который анализирует медиатеку и выявляет файлы, не прикреплённые к контенту.

Собственное решение на PHP для автоматического удаления старых изображений WordPress

Если вы предпочитаете кастомный подход, можно написать функцию, которая будет запускаться по cron и удалять изображения, которые не используются дольше определённого времени (например, 180 дней). Ниже пример такого решения.

function wpmanager_remove_old_unused_images() {
    global $wpdb;
    $days_threshold = 180; // количество дней, после которого изображение считается устаревшим

    // Получаем дату для сравнения
    $date_threshold = date('Y-m-d H:i:s', strtotime("-{$days_threshold} days"));

    // Запрос к базе для поиска вложений изображений, которые не используются
    $query = $wpdb->prepare(
        "SELECT ID FROM $wpdb->posts WHERE post_type = 'attachment' AND post_mime_type LIKE 'image/%' AND post_date < %s",
        $date_threshold
    );

    $attachments = $wpdb->get_col($query);

    foreach ($attachments as $attachment_id) {
        // Проверяем, используется ли изображение в каких-то постах
        $usage = get_posts(array(
            'post_type' => 'any',
            'meta_query' => array(
                array(
                    'key' => '_thumbnail_id',
                    'value' => $attachment_id,
                    'compare' => '=',
                ),
            ),
            'posts_per_page' => 1,
        ));

        // Проверяем в контенте постов
        $content_usage = $wpdb->get_var($wpdb->prepare(
            "SELECT ID FROM $wpdb->posts WHERE post_content LIKE %s LIMIT 1",
            '%'. $attachment_id .'%'
        ));

        if (empty($usage) && empty($content_usage)) {
            // Удаляем вложение
            wp_delete_attachment($attachment_id, true);
        }
    }
}

// Хук для запуска функции по расписанию
add_action('wpmanager_cron_delete_old_images', 'wpmanager_remove_old_unused_images');

// Регистрация события при активации темы или плагина
function wpmanager_schedule_cron() {
    if (!wp_next_scheduled('wpmanager_cron_delete_old_images')) {
        wp_schedule_event(time(), 'daily', 'wpmanager_cron_delete_old_images');
    }
}
add_action('wp', 'wpmanager_schedule_cron');

В этом коде мы выбираем все изображения, загруженные более 180 дней назад, и проверяем, используются ли они в качестве миниатюр или внутри содержимого. Если нет — удаляем их безвозвратно (второй параметр true в wp_delete_attachment).

Настройка и безопасность автоматического удаления

При автоматическом удалении файлов важно:

  • Тщательно проверять, что изображение не используется;
  • Резервировать данные перед запуском механизма;
  • Установить логирование удалений для контроля;
  • Настроить период запуска (например, раз в неделю или месяц).

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

Интеграция с WPShop и другими плагинами

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

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

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

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

Регулярно проводите аудит медиатеки, чтобы сайт оставался лёгким и быстрым.

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

⭐⭐⭐⭐⭐
Оптимизация AJAX в WordPress для улучшения производительности
15.04.2026
Автоматическое управление переадресациями в WordPress: практическое руководство
02.04.2026
WooCommerce: автоматическое изменение названия и слага товара по условию
15.06.2026
WooCommerce: автоматическое изменение ставки налогов для разных регионов
23.06.2026
Автоматическое управление ролями пользователей в WordPress: практическое руководство
17.12.2025
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее