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

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

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

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

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

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

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

Рассмотрим несколько популярных плагинов:

  • Media Cleaner — мощный инструмент для поиска и удаления неиспользуемых файлов. Имеет бесплатную и PRO-версию. PRO-версия умеет работать с WooCommerce и плагинами, которые хранят изображения нестандартно.
  • WP-Optimize — комплексный плагин для оптимизации базы данных и медиа. Включает функцию очистки неиспользуемых изображений.
  • Image Cleanup — простой плагин, который ищет неиспользуемые изображения и позволяет безопасно их удалить.

Пример использования Media Cleaner

После установки плагина зайдите в раздел Media > Cleaner. Запустите сканирование. Плагин покажет список файлов, которые не найдены в контенте. Внимательно проверьте результаты, особенно если используете кастомные темы или конструкторы страниц.

Удаление изображений вручную с помощью кода

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

function wpbuy_delete_unused_images() {
    $args = [
        'post_type'      => 'attachment',
        'post_mime_type' => 'image',
        'posts_per_page' => -1,
        'post_status'    => 'inherit',
    ];
    $images = get_posts($args);
    foreach ($images as $image) {
        $attached = get_post_field('post_parent', $image->ID);
        $content = get_posts([
            's' => wp_get_attachment_url($image->ID),
            'post_type' => ['post', 'page'],
            'fields' => 'ids',
        ]);
        if (empty($attached) && empty($content)) {
            wp_delete_attachment($image->ID, true);
        }
    }
}

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

Особенности удаления изображений из WooCommerce

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

Для безопасного удаления рекомендуется использовать плагин Media Cleaner PRO или специальные скрипты, которые учитывают WooCommerce-логику.

Пример проверки изображений товаров WooCommerce

function wpbuy_is_wc_image_used( $attachment_id ) {
    global $wpdb;
    $meta_key = '_thumbnail_id';
    $count = $wpdb->get_var($wpdb->prepare(
        "SELECT COUNT(*) FROM {$wpdb->postmeta} WHERE meta_key = %s AND meta_value = %d",
        $meta_key, $attachment_id
    ));
    return $count > 0;
}

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

Резервное копирование и тестирование перед удалением

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

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

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

  • Используйте специализированные плагины для безопасного поиска и удаления неиспользуемых изображений.
  • Если хотите автоматизировать процесс, используйте кастомные функции с осторожностью и всегда делайте резервные копии.
  • Особое внимание уделяйте изображениям WooCommerce — используйте PRO-версии плагинов или кастомные проверки.
  • Регулярно проводите чистку медиатеки для поддержания скорости и стабильности сайта.

Для удобства автоматизации и расширенных возможностей по работе с медиатекой рекомендуем обратить внимание на Media Cleaner на WPSHOP.ru — плагин, который реально помогает безопасно удалять неиспользуемые изображения и освобождать место.

Как добавить автоматическое сохранение данных в формах WordPress
20.12.2025
WooCommerce: автоматическое изменение стоимости товаров по расписанию без плагинов
19.06.2026
Как создать собственный тип записи (Custom Post Type) в WordPress с примером кода
16.04.2026
Как избежать конфликтов между плагинами WordPress: практические решения и примеры кода
19.01.2026
Как сделать динамические атрибуты для шорткодов в WordPress
15.01.2026