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

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

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

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

  • Загромождение файловой системы.
  • Проблемы с резервным копированием — бэкапы становятся тяжелее.
  • Увеличение времени и ресурсов для обработки медиа, что негативно сказывается на скорости сайта.

Особенно критично это для крупных изображений (например, более 1 МБ), которые могут существенно нагружать сервер.

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

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

1. Сканирование медиа-библиотеки по размеру файлов

Проверяем все файлы в папке uploads и фильтруем по размеру. Это позволит сосредоточиться на крупных файлах.

2. Поиск по использованию в базе данных

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

3. Использование плагинов

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

Реализация автоматического удаления через WPClass Cron

Автоматизировать процесс можно с помощью Cron-задачи, которая по расписанию будет проверять и удалять неиспользуемые крупные изображения. Ниже пример реализации.

Шаг 1. Функция для поиска неиспользуемых изображений

function wpclass_find_unused_large_images() {
    global $wpdb;
    $upload_dir = wp_upload_dir();
    $upload_path = $upload_dir['basedir'];
    $min_size = 1024 * 1024; // 1 МБ

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

    foreach ($attachments as $attachment) {
        $file_path = str_replace(wp_upload_dir()['baseurl'], $upload_path, $attachment->guid);
        if (file_exists($file_path)) {
            $file_size = filesize($file_path);
            if ($file_size >= $min_size) {
                // Проверяем, используется ли файл
                $is_used = false;
                // Проверка в постах
                $count = $wpdb->get_var($wpdb->prepare(
                    "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
                    '%' . $wpdb->esc_like($attachment->guid) . '%'
                ));
                if ($count > 0) {
                    $is_used = true;
                }
                // Можно добавить другие проверки (meta, widget, и т.д.)

                if (!$is_used) {
                    $unused[] = $attachment->ID;
                }
            }
        }
    }

    return $unused;
}

Шаг 2. Функция удаления неиспользуемых изображений

function wpclass_delete_unused_large_images() {
    $unused_images = wpclass_find_unused_large_images();
    foreach ($unused_images as $attachment_id) {
        wp_delete_attachment($attachment_id, true); // true — удаляет физический файл
    }
}

Шаг 3. Регистрация Cron-задачи

Добавляем событие, которое будет запускаться, например, раз в неделю.

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

add_action('wpclass_cleanup_unused_images', 'wpclass_delete_unused_large_images');

Практические рекомендации и плагины для оптимизации изображений

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

  • Использовать плагины оптимизации изображений, например, Clearfy Pro, для сжатия и оптимизации.
  • Настроить WebP-формат и lazy loading для ускорения загрузки страниц.
  • Периодически проверять медиа-библиотеку на наличие дубликатов и устаревших файлов.

Заключение: поддержка чистоты медиа в WordPress

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

Как сделать автоматическое удаление старого контента по типу записи в WordPress
03.04.2026
Как удалить неиспользуемые таксономии в WordPress
21.03.2026
Как запретить регистрацию пользователей в WooCommerce
28.02.2026
Автоматическое удаление заказов WooCommerce по статусу «неоплачено» и интеграция с кассой (ККМ)
25.05.2026
Как изменить URL структуру таксономии в WordPress без потери SEO
17.02.2026