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

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

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

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

Если не очищать медиабиблиотеку, это приводит к:

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

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

Как найти неиспользуемые изображения: базовые методы и плагины

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

Рекомендуемые плагины:

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

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

Автоматизация удаления: примеры кода для планировщика задач WordPress (WP-Cron)

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

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

Суть метода — получить список всех вложений (post_type = attachment), проверить, используются ли они в контенте, и если нет — удалить.

function wp_course_get_unused_attachments() {
    global $wpdb;

    // Получаем все ID вложений изображений
    $attachments = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment' AND post_mime_type LIKE 'image/%'");
    
    $unused = [];
    foreach ($attachments as $attachment_id) {
        $file_url = wp_get_attachment_url($attachment_id);
        if (!$file_url) continue;

        // Проверяем наличие URL файла в контенте всех постов
        $count = $wpdb->get_var($wpdb->prepare(
            "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
            '%' . $wpdb->esc_like($file_url) . '%'
        ));

        if ($count == 0) {
            $unused[] = $attachment_id;
        }
    }
    return $unused;
}

function wp_course_delete_unused_attachments() {
    $unused_attachments = wp_course_get_unused_attachments();
    if (empty($unused_attachments)) {
        return;
    }
    foreach ($unused_attachments as $attach_id) {
        wp_delete_attachment($attach_id, true); // true — удаляет физический файл
    }
}

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

Добавление задачи в WP-Cron

Чтобы запускать удаление автоматически, добавим периодический хук:

function wp_course_schedule_unused_images_cleanup() {
    if (!wp_next_scheduled('wp_course_cleanup_unused_images_hook')) {
        wp_schedule_event(time(), 'weekly', 'wp_course_cleanup_unused_images_hook');
    }
}
add_action('wp', 'wp_course_schedule_unused_images_cleanup');

add_action('wp_course_cleanup_unused_images_hook', 'wp_course_delete_unused_attachments');

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

Дополнительные рекомендации и безопасность

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

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

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

Выводы и итоги

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

Используйте предложенные методы, адаптируйте код под свои задачи и не забывайте о безопасности и резервном копировании.

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

⭐⭐⭐⭐⭐
Как создать свой шорткод в WordPress: практическое руководство с примерами
10.11.2025
WooCommerce: как автоматически удалять товар из корзины при обновлении количества
19.05.2026
Как запретить обработку разных типов файлов в WordPress: практическое руководство
22.03.2026
Как разрешить использовать PHP в шорткодах WordPress: практическое руководство
06.12.2025
Как избежать конфликтов масштабирования в WordPress: практическое руководство
06.04.2026
×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее