Как удалить старые медиа файлы из библиотеки WordPress

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

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

Медиафайлы могут занимать десятки гигабайт дискового пространства. Особенно это актуально для сайтов с большим объёмом контента или интернет-магазинов. Неразборчивое хранение и отсутствие чистки медиа приводит к:

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

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

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

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

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

Использование плагина Media Cleaner

Плагин Media Cleaner от Meow Apps – один из лучших инструментов для поиска и удаления неиспользуемых медиафайлов. Он анализирует:

  • Записи и страницы
  • Пользовательские типы записей
  • Виджеты
  • Настройки темы
  • Плагины, которые могут вставлять файлы

Как использовать:

  1. Установите и активируйте плагин Media Cleaner.
  2. Перейдите в меню Media > Cleaner.
  3. Запустите сканирование, чтобы плагин выявил неиспользуемые файлы.
  4. Просмотрите результаты и удалите файлы, которые точно не нужны.

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

Ручной поиск неиспользуемых файлов через SQL-запросы

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

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

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

Удаление старых медиафайлов с помощью собственного кода

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

Пример функции для темы или плагина wp-ai:

function wpai_delete_unused_attachments() {
  $args = array(
    'post_type'      => 'attachment',
    'posts_per_page' => -1,
    'post_status'    => 'inherit',
  );
  $attachments = get_posts($args);
  foreach ($attachments as $attachment) {
    $attachment_url = wp_get_attachment_url($attachment->ID);
    $used = false;

    $query = new WP_Query(array(
      's' => basename($attachment_url),
      'post_type' => 'any',
      'posts_per_page' => 1,
      'post_status' => 'publish',
    ));

    if ($query->have_posts()) {
      $used = true;
    }

    wp_reset_postdata();

    if (!$used) {
      wp_delete_attachment($attachment->ID, true); // жесткое удаление
    }
  }
}

Этот код ищет в содержимом сайта совпадение по имени файла вложения. Если совпадения нет, вложение удаляется. Такой метод не идеален, но хорошо помогает очистить библиотеку.

Автоматизация удаления по расписанию

Чтобы не запускать функцию вручную, её можно привязать к cron-задаче WordPress:

if (! wp_next_scheduled('wpai_cron_delete_unused_attachments')) {
  wp_schedule_event(time(), 'daily', 'wpai_cron_delete_unused_attachments');
}
add_action('wpai_cron_delete_unused_attachments', 'wpai_delete_unused_attachments');

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

Плагины для оптимизации и удаления старых медиафайлов

Кроме Media Cleaner, есть и другие решения:

  • DNUI (Delete Not Used Image) — плагин для поиска и удаления неиспользуемых изображений.
  • WP-Optimize — комплексный плагин для оптимизации базы данных и очистки медиа.
  • Image Cleanup — простой инструмент для обнаружения неиспользуемых медиафайлов.

Выбирая плагин, обращайте внимание на совместимость с вашей версией WordPress и наличие резервного копирования.

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

Удаление медиафайлов — рискованная операция. Ошибочно удалённые файлы могут сломать внешний вид сайта или функционал. Поэтому перед чисткой:

  • Создайте полную резервную копию сайта и базы данных.
  • Проверьте результаты сканирования плагина или собственного скрипта.
  • Удаляйте файлы поэтапно, а не всё сразу.
  • Используйте staging-среду, если есть возможность.

Только так вы обеспечите сохранность данных и стабильную работу сайта.

Как оптимизировать работу AI-плагинов в WordPress
21.02.2026
Как добавить автоматическое подгружание контента в WordPress с помощью AI
23.01.2026
Как создать автоматический перевод постов WordPress с помощью AI
11.03.2026
Как создать автоматические заголовки для постов в WordPress с помощью AI
04.03.2026
Как создать автоматический генератор описаний для товаров WordPress с помощью AI
28.01.2026