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

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

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

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

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

  • Увеличению размера резервных копий и времени их создания;
  • Росту нагрузки на сервер из-за большого количества файлов;
  • Риск использования устаревших или ошибочных изображений;
  • Сложностям при миграции сайта и оптимизации базы данных.

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

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

Для начала нужно понять, какие изображения считать нерабочими. Обычно это:

  • Файлы, не вставленные ни в один пост, страницу или виджет;
  • Изображения, на которые ссылаются, но которые физически отсутствуют на сервере (битые ссылки);
  • Медиафайлы, прикреплённые к удалённым записям;
  • Изображения, вставленные в устаревшие шорткоды или плагины, которые больше не используются.

Для поиска таких файлов можно использовать SQL-запросы, PHP-код или специализированные плагины.

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

Существует несколько плагинов, которые помогут автоматизировать этот процесс.

1. Media Cleaner

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

Узнать больше и скачать Media Cleaner

2. WP-Optimize

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

Узнать больше и скачать WP-Optimize

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

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

Логика работы скрипта

  • Получаем список всех изображений из таблицы wp_posts с типом attachment и mime-типом image/.
  • Проверяем, используются ли эти изображения в содержимом постов, страниц, виджетов и других метаданных.
  • Если изображение не найдено нигде — удаляем его с помощью функции WordPress wp_delete_attachment().

Пример кода для WPCommunity

function wpcommunity_delete_unused_images() {
    global $wpdb;

    // Получаем все изображения
    $attachments = $wpdb->get_results(
        "SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment' AND post_mime_type LIKE 'image/%'"
    );

    foreach ($attachments as $attachment) {
        $id = $attachment->ID;
        $file = get_attached_file($id);

        // Проверяем использование изображения в постах и метаданных
        $used_in_posts = $wpdb->get_var($wpdb->prepare(
            "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
            '%' . basename($file) . '%'
        ));

        $used_in_meta = $wpdb->get_var($wpdb->prepare(
            "SELECT COUNT(*) FROM {$wpdb->postmeta} WHERE meta_value LIKE %s",
            '%' . basename($file) . '%'
        ));

        if (intval($used_in_posts) === 0 && intval($used_in_meta) === 0) {
            // Удаляем вложение и файлы
            wp_delete_attachment($id, true);
        }
    }
}

// Создаем WP-Cron событие для запуска очистки раз в неделю
if (!wp_next_scheduled('wpcommunity_weekly_unused_images_cleanup')) {
    wp_schedule_event(time(), 'weekly', 'wpcommunity_weekly_unused_images_cleanup');
}

add_action('wpcommunity_weekly_unused_images_cleanup', 'wpcommunity_delete_unused_images');

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

Советы по безопасному использованию автоматической очистки изображений

Удаление медиафайлов — операция потенциально опасная, если что-то пойдёт не так. Чтобы избежать проблем, следуйте рекомендациям:

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

Дополнительные инструменты и плагины для оптимизации медиа в WordPress

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

  • Imagify — автоматическое сжатие изображений без потери качества;
  • Smush — оптимизация и ленивое загрузка (lazy load);
  • Regenerate Thumbnails — регенерация миниатюр после изменения размеров темы.

Использование этих инструментов вместе с автоматической очисткой значительно повысит производительность сайта и снизит нагрузку на сервер.

Итог

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

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

Как использовать хуки WooCommerce для изменения количества товаров при добавлении в корзину
14.05.2026
Как автоматизировать обновление пользовательских ролей в WordPress
22.12.2025
Как избежать проблем с удалением товаров в WooCommerce
20.04.2026
Как установить ограничение на регистрацию в WordPress по домену e-mail
20.03.2026
Как избежать проблем с перенаправлением после включения SSL в WordPress
28.05.2026

Задать вопрос о вордпресс, получить ответ - это все можно сделать в нашем сообществе WP. Сайт в данный момент в разработке, изучите ссылки ниже: