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

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

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

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

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

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

Проверка файлов, не привязанных к контенту

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

SELECT ID FROM wp_posts WHERE post_content LIKE '%имя_файла%';

Если записи не найдены, файл скорее всего не используется в контенте.

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

Шаг 1. Резервное копирование

Перед любыми изменениями сделайте бэкап базы данных и папки wp-content/uploads.

Шаг 2. Получение списка неиспользуемых вложений

Создайте PHP-скрипт, который выполнит SQL-запрос и получит ID вложений без связей:

global $wpdb;

$unused_attachments = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment' AND ID NOT IN (SELECT meta_value FROM {$wpdb->postmeta} WHERE meta_key = '_thumbnail_id') AND post_parent = 0");

if (empty($unused_attachments)) {
    echo 'Неиспользуемых файлов не найдено.';
} else {
    foreach ($unused_attachments as $attachment_id) {
        wp_delete_attachment($attachment_id, true);
    }
    echo count($unused_attachments) . ' файлов удалено.';
}

Шаг 3. Удаление файлов и записей

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

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

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

Запустите SQL-запрос из раздела диагностики повторно — он должен вернуть пустой результат.

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

  • Удаление нужных файлов: Иногда файлы используются в виджетах, шорткодах или кастомных полях. Перед удалением стоит проверить содержимое всех таких областей.
  • Проблемы с правами доступа: Если wp_delete_attachment не удаляет файлы, проверьте права на папку uploads и файлы (рекомендуется 755 для папок и 644 для файлов).
  • Удаление только записи без файла: Используйте параметр true во втором аргументе wp_delete_attachment($id, true), чтобы удалить физический файл.

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

  • Запускайте массовое удаление на сайте с низкой нагрузкой, чтобы избежать перегрузки сервера.
  • Перед автоматизацией удаления добавьте логирование удаленных ID и файлов для возможности отката.
  • Регулярно очищайте медиабиблиотеку, чтобы не растрачивать место на сервере и не замедлять бэкапы.
  • Для комплексной диагностики используйте WP-CLI с командами wp media list и wp media delete для более гибкого управления.

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

МетодОписаниеПлюсыМинусы
PHP-скрипт с wp_delete_attachmentКодовое удаление без плагиновТочный контроль, не требует дополнительных установокТребует знаний PHP и осторожности
WP-CLIКомандная строка для управления медиаБыстро, удобно для админов с SSH-доступомНе у всех есть доступ к консоли сервера
Плагины (Media Cleaner, WP-Optimize)Готовые решения с интерфейсомПростота использования, дополнительные функцииРиск удаления нужных файлов, нагрузка на сайт
Как избежать повторной загрузки файлов в WordPress
13.12.2025
Как защитить загружаемые файлы WordPress от неавторизованного доступа
12.04.2026
Как разделить загрузку и хранение файлов в WordPress для оптимизации и безопасности
13.01.2026
Как создать собственный плагин для загрузки файлов в WordPress
01.12.2025
Как использовать фильтры для изменения путей загрузки файлов в WordPress
06.04.2026

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