Как удалить неиспользуемые медиа файлы в WordPress

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

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

Медиафайлы — это изображения, видео, аудио и другие документы, загруженные в WordPress. С течением времени многие из них перестают быть актуальными: картинки удаленных постов, временные файлы, дубликаты и прочие. Если их не удалять, возникают следующие проблемы:

  • Занятие места на хостинге. Особенно критично для сайтов с ограниченным дисковым пространством.
  • Ухудшение производительности. Большое количество медиафайлов замедляет работу библиотеки и бэкапов.
  • Сложность управления. Трудно ориентироваться в библиотеке, повышается риск случайного использования устаревших изображений.

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

Как найти неиспользуемые медиафайлы в WordPress

Использование плагинов для поиска неиспользуемых файлов

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

  • Media Cleaner — мощный и популярный плагин, который сканирует библиотеку и проверяет использование файлов в постах, страницах, виджетах и даже в произвольных полях. Он предлагает безопасное удаление с возможностью восстановления.
  • DNUI (Delete Not Used Image) — более легкий и простой инструмент, который быстро анализирует контент и находит неиспользуемые изображения.

Для установки выполните следующие шаги:

  1. Перейдите в админ-панель WordPress → Плагины → Добавить новый.
  2. Введите в поиске название плагина, например, "Media Cleaner".
  3. Установите и активируйте плагин.
  4. Перейдите в настройки плагина и запустите сканирование.

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

Поиск неиспользуемых медиафайлов с помощью SQL-запросов

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

Пример запроса для поиска вложений, не связанных с постами:

SELECT ID, post_title, guid FROM wp_posts WHERE post_type = 'attachment' AND ID NOT IN (SELECT meta_value FROM wp_postmeta WHERE meta_key = '_thumbnail_id');

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

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

Удаление неиспользуемых медиафайлов с помощью кода

Пример функции для удаления медиафайлов без использования контента

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

function wp_gpt_delete_unused_attachments() {
    $args = [
        'post_type' => 'attachment',
        'posts_per_page' => -1,
        'post_status' => 'inherit',
        'meta_query' => [
            [
                'key' => '_wp_attached_file',
                'compare' => 'EXISTS'
            ]
        ]
    ];
    $attachments = get_posts($args);
    foreach ($attachments as $attachment) {
        $attachment_id = $attachment->ID;
        // Проверяем, используется ли вложение где-либо
        $is_used = false;

        // Проверка на миниатюру
        $thumb_posts = get_posts([
            'meta_key' => '_thumbnail_id',
            'meta_value' => $attachment_id,
            'post_type' => 'any',
            'posts_per_page' => 1
        ]);
        if ($thumb_posts) {
            $is_used = true;
        }

        // Проверка в содержимом постов
        if (!$is_used) {
            $content_posts = get_posts([
                's' => wp_get_attachment_url($attachment_id),
                'post_type' => 'any',
                'posts_per_page' => 1
            ]);
            if ($content_posts) {
                $is_used = true;
            }
        }

        if (!$is_used) {
            // Удаляем вложение
            wp_delete_attachment($attachment_id, true);
        }
    }
}
// Запуск функции через WP-CLI или вручную
// wp_gpt_delete_unused_attachments();

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

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

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

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

Оптимизация изображений после очистки

После удаления неиспользуемых файлов имеет смысл оптимизировать оставшиеся медиафайлы с помощью плагинов, например:

  • Smush — сжимает изображения без потери качества.
  • ShortPixel — продвинутый инструмент с возможностью пакетной оптимизации.

Автоматизация удаления через WP-CLI

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

if (defined('WP_CLI') && WP_CLI) {
    WP_CLI::add_command('wp_gpt clean-unused-media', function() {
        wp_gpt_delete_unused_attachments();
        WP_CLI::success('Неиспользуемые медиафайлы удалены');
    });
}

Запускать можно в терминале командой wp wp_gpt clean-unused-media.

Заключение

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

Как создать автоматический генератор шорткодов в WordPress с поддержкой параметров
19.03.2026
Как создать автоматический генератор SEO-заголовков в WordPress с помощью PHP и WPGPT
01.03.2026
Как создать автономный чат-бот на WordPress с помощью WPGPT
29.12.2025
Как автоматизировать ответы на комментарии в WordPress с помощью GPT
18.12.2025
Как создать свой шорткод в WordPress с поддержкой параметров
25.11.2025