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

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

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

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

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

Удалять изображения вручную — долго и рискованно. Поэтому автоматизация этого процесса — важная задача для каждого администратора WordPress.

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

Плагин Media Cleaner

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

  • Имеет бесплатную и PRO версию.
  • Поддерживает работу с плагинами WooCommerce, ACF и другими.
  • Позволяет создавать резервные копии перед удалением.

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

Плагин WP-Optimize

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

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

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

Логика функции

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

Пример кода

function wpupdate_delete_unused_images() {
    // Получаем все вложения типа 'image'
    $args = [
        'post_type'      => 'attachment',
        'post_mime_type' => 'image',
        'posts_per_page' => -1,
        'post_status'    => 'inherit',
    ];

    $images = get_posts($args);
    $unused_images = [];

    foreach ($images as $image) {
        $image_id = $image->ID;
        $image_url = wp_get_attachment_url($image_id);

        // Проверяем использование через WP_Query
        $args_check = [
            'post_type'   => 'any',
            'post_status' => 'publish',
            'meta_query'  => [
                [
                    'key'     => '_thumbnail_id',
                    'value'   => $image_id,
                    'compare' => '=',
                ],
            ],
            'fields'      => 'ids',
            'posts_per_page' => 1,
        ];

        $query = new WP_Query($args_check);

        // Если изображение не используется как миниатюра
        if (!$query->have_posts()) {
            // Проверяем содержание постов на наличие URL изображения
            global $wpdb;
            $count = $wpdb->get_var($wpdb->prepare(
                "SELECT COUNT(*) FROM $wpdb->posts WHERE post_content LIKE %s",
                '%' . $wpdb->esc_like($image_url) . '%'
            ));

            if (intval($count) === 0) {
                $unused_images[] = $image_id;
            }
        }
    }

    // Удаляем неиспользуемые изображения
    foreach ($unused_images as $unused_id) {
        wp_delete_attachment($unused_id, true); // true — удалить физический файл
    }

    return count($unused_images);
}

Эту функцию можно запускать вручную, например, через WP-CLI, или автоматизировать с помощью cron-задачи. Ниже пример добавления ежедневного cron-задания:

if (!wp_next_scheduled('wpupdate_daily_image_cleanup')) {
    wp_schedule_event(time(), 'daily', 'wpupdate_daily_image_cleanup');
}
add_action('wpupdate_daily_image_cleanup', 'wpupdate_delete_unused_images');

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

Перед внедрением автоматического удаления важно понимать ряд нюансов:

  • Точность определения использования: Некоторые изображения могут использоваться в нестандартных местах (например, в настройках темы, виджетах, кастомных полях), и их трудно выявить простым поиском.
  • Резервное копирование: Всегда делайте бэкап перед массовым удалением, чтобы избежать потери важных данных.
  • Проверка перед удалением: Рекомендуется сначала просматривать список на удаление вручную или запускать функцию в режиме только подсчёта.
  • Совместимость с плагинами: Некоторые плагины могут хранить ссылки на изображения в нестандартных местах, что требует дополнительной проверки.

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

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

Для комплексного управления медиафайлами советуем обратить внимание на следующие инструменты:

  • Clearfy Pro — плагин для оптимизации сайта, включает инструменты для управления медиа.
  • WPRemark — помогает оптимизировать комментарии и медиа.
  • Использование CDN с автоматической оптимизацией изображений, например, Cloudflare или Jetpack, для уменьшения нагрузки на сервер.

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

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

⭐⭐⭐⭐⭐
Оптимизация отображения библиотеки медиа в WordPress: практические решения и примеры
10.04.2026
Оптимизация загрузки шрифтов в WordPress: улучшение скорости и производительности
23.11.2025
Как настроить авто удаление старых кешей в WordPress для повышения производительности
28.01.2026
WooCommerce: правильная обработка ошибок при оплате и возврате ответа клиенту
20.04.2026
Как создать динамический виджет в WordPress с примерами кода
19.12.2025
×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее