Очистка и оптимизация медиабиблиотеки WordPress от неиспользуемых файлов

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

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

Основные причины появления неиспользуемых файлов:

  • Удаление или изменение контента без удаления медиафайлов;
  • Автоматически создаваемые миниатюры, которые не используются;
  • Загрузка файлов через сторонние плагины без последующей очистки;
  • Дублирование файлов при повторных загрузках с разными именами.

Диагностика: как определить, какие файлы не используются

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

  • Сканирование базы данных на наличие ссылок к файлам в таблицах wp_posts (поля post_content, meta_value), wp_postmeta, и плагинах;
  • Сравнение файлов в папке uploads с записями в базе данных;
  • Использование WP-CLI для получения списка файлов и поиска их использования.

Пример команды WP-CLI для выгрузки всех медиафайлов с их ID и путями:

wp media list --field=ID,filepath --format=csv

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

Пошаговое решение: удаление неиспользуемых файлов без плагинов

1. Создайте резервную копию сайта и базы данных

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

2. Получите список всех медиафайлов

$attachments = get_posts(array(
    'post_type'      => 'attachment',
    'posts_per_page' => -1,
    'post_status'    => 'inherit',
));

3. Проверьте использование файлов в контенте и метаданных

В цикле по всем вложениям проверяем, есть ли ссылки на файл в постах или метаполях.

foreach ($attachments as $attachment) {
    $file_url = wp_get_attachment_url($attachment->ID);
    $used_in_posts = false;
    
    // Проверка в контенте постов
    $posts = get_posts(array(
        's' => basename($file_url),
        'post_type' => 'any',
        'posts_per_page' => 1,
        'fields' => 'ids',
    ));
    if (!empty($posts)) {
        $used_in_posts = true;
    }
    
    // Дополнительная проверка в метаполях можно добавить здесь
    
    if (!$used_in_posts) {
        // Файл не используется - можно удалить
        wp_delete_attachment($attachment->ID, true);
    }
}

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

Функция wp_delete_attachment удалит файл и связанные с ним миниатюры.

Проверка результата после внедрения

  • Проверьте количество записей в медиабиблиотеке через админку (Медиа → Библиотека);
  • Проверьте папку wp-content/uploads через FTP — размер должен уменьшиться;
  • Запустите WP-CLI команду wp media list и сравните с исходным списком;
  • Проверьте страницы сайта, где были изображения, чтобы убедиться, что не удалены используемые файлы.

Частые ошибки и как их исправить

  • Удаление файлов, используемых в нестандартных местах. Например, ссылки на изображения в настройках плагинов или виджетах. Решение: добавьте дополнительные проверки по метаполям или настройкам плагинов.
  • Пропуск файлов, используемых через кастомные поля или shortcodes. Нужно расширить поиск по базе данных, включая таблицу postmeta.
  • Удаление вложений без удаления записей в базе. Используйте wp_delete_attachment с параметром true, чтобы удалить полностью.

Практические советы по безопасности и производительности

  • Всегда делайте бэкап перед массовыми изменениями в медиабиблиотеке;
  • Для больших сайтов запускайте скрипт пакетно, чтобы избежать таймаутов;
  • Используйте транзакции или контрольные точки, чтобы нельзя было потерять данные при ошибках;
  • Для автоматизации очистки используйте WP-CLI скрипты и планировщик задач (cron);
  • Если на сайте много плагинов, учитывайте их специфику — некоторые могут хранить ссылки на медиа не в стандартных местах.

Сравнение вариантов очистки медиабиблиотеки

МетодПлюсыМинусыКогда использовать
Ручная проверка и удаление в админкеПростота, безопасностьТрудозатратно, для небольших сайтовМаленькие сайты, единичные файлы
Использование плагинов (например, Media Cleaner)Автоматизация, удобный интерфейсРиск ложных срабатываний, нагрузкаСредние сайты, когда нужен удобный UI
Программное удаление с кастомным кодомГибкость, интеграция в процессыТребует знаний, риск ошибокКрупные проекты, автоматизация
Как автоматически переименовать загруженные файлы в WordPress
23.01.2026
Как автоматически удалять файлы WooCommerce после отмены заказа без плагинов
12.07.2026
Как сохранить и загрузить медиафайлы WordPress
22.11.2025
Как использовать WP Upload Dir для разделения файлов в WordPress
25.02.2026
Как удалить загруженные файлы из WooCommerce после отмены заказа
07.05.2026

wp upload - это директория в WP для загрузки файлов. Подробнее про загрузку файлов в админку можно почитать на этой странице.