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

Дубли изображений в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких причин: повторные загрузки одного и того же файла, разные размеры миниатюр, старые вложения после миграций, а иногда — копии в медиатеке, которые уже нигде не используются. Если сайт живёт давно, это начинает мешать не только в админке: растёт объём uploads, усложняется бэкап, а поиск неиспользуемых файлов становится ручной работой.

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

Когда дубли изображений действительно проблема

Не каждое повторяющееся имя файла означает мусор. В WordPress один загруженный файл может иметь несколько производных размеров: thumbnail, medium, large и размеры, которые добавили тема или плагины. Это нормальная работа системы. Проблемой становятся именно лишние оригиналы и копии, которые не привязаны к записям или повторно загружены вручную.

Типичные признаки:

  • в wp-content/uploads слишком много похожих файлов с суффиксами вроде -1, -2;
  • в медиатеке есть несколько одинаковых изображений с разными ID;
  • после переноса сайта остались старые вложения, которые не используются в контенте;
  • бэкапы стали заметно тяжелее из-за медиаархива;
  • админка медиа работает медленно, особенно на сайтах с большим количеством файлов.

Диагностика: как понять, что именно нужно удалять

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

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

Откройте несколько подозрительных файлов в медиатеке и посмотрите, есть ли у них Attachment Details и где они используются. Если изображение вставлено в записи, страницы или блоки, удалять его без проверки нельзя. На больших сайтах удобнее сначала выгрузить список вложений и искать по нему вручную или через SQL.

Посмотрите, не дублируются ли именно оригиналы

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

Пошаговое решение без лишнего риска

Надёжнее всего идти в два этапа: сначала собрать кандидатов, потом удалить только то, что не используется. Для небольших сайтов часть работы можно сделать через медиатеку, для крупных — через код или WP-CLI.

1. Сделайте резервную копию

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

2. Найдите неиспользуемые вложения

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

$attachments = get_posts([
    'post_type'      => 'attachment',
    'post_status'    => 'inherit',
    'posts_per_page' => -1,
    'fields'         => 'ids',
]);

foreach ($attachments as $attachment_id) {
    $parent_id = wp_get_post_parent_id($attachment_id);

    if (!$parent_id) {
        $file = get_attached_file($attachment_id);
        if ($file) {
            echo $attachment_id . ' | ' . $file . PHP_EOL;
        }
    }
}

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

3. Удаляйте только после проверки использования

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

$attachment_id = 123;

if (get_post_type($attachment_id) === 'attachment') {
    wp_delete_attachment($attachment_id, true);
}

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

4. Если дубли появились после миграции, проверьте пути к файлам

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

ПодходКогда подходитМинус
Ручная проверка в медиатекеНебольшой сайт, мало файловМедленно и легко пропустить дубли
Код через get_posts() и wp_delete_attachment()Нужен точный контрольТребует аккуратной проверки
Плагин для очистки медиаМного файлов и нет времени на ручную сортировкуНужно смотреть, как он определяет «неиспользуемые» файлы

Как проверить результат после очистки

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

  • Откройте несколько старых записей и страниц с изображениями.
  • Проверьте главную, архивы и карточки записей, если тема выводит featured image.
  • Убедитесь, что в медиатеке не осталось битых вложений с пустым предпросмотром.
  • Проверьте папку uploads на сервере: удалённые файлы не должны оставаться там вручную.
  • Если используется кеш, очистите его и посмотрите страницу в режиме инкогнито.

Для технической проверки можно сравнить количество вложений до и после очистки через админку или SQL-запросом к таблице wp_posts по типу attachment. Если количество уменьшилось, а контент на сайте не сломался, очистка прошла нормально.

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

Удаляют по имени файла

Это самая опасная ошибка. Одинаковое имя не гарантирует, что файл лишний. Сначала сравните размер, дату и привязку к записи.

Стирают файлы вручную из uploads

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

Путают дубли с миниатюрами

Файлы вида image-300x200.jpg — это не дубли, а производные размеры. Их удаление вручную может сломать отображение в теме или в блоках.

Не проверяют сторонние плагины

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

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

Если медиаархив большой, не делайте массовую очистку в рабочее время. На живом сайте лучше:

  • сначала прогнать проверку на staging-копии;
  • сделать полный бэкап базы и uploads;
  • удалять партиями, а не одним большим запросом;
  • после очистки пересобрать кеш и проверить несколько страниц с разными типами изображений;
  • если сайт на слабом хостинге, не запускать тяжёлые скрипты через браузер — лучше через WP-CLI или временный CLI-скрипт.

Если вам нужен более широкий аудит дублей и мусора на сайте, в том числе по мета-тегам, неиспользуемым данным и технической чистке, можно посмотреть Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином логика проверки остаётся той же: сначала найти кандидатов, потом подтвердить, что они не используются.

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

Как автоматизировать удалённые обновления в WordPress без плагинов
28.09.2026
Как автоматизировать управление пользовательскими ролями в WordPress
26.09.2026
Как автоматизировать обновление старых публикаций в WordPress для улучшения SEO
10.09.2026
Как ограничить доступ к админке WordPress по IP
11.08.2026
Как найти и удалить неиспользуемые медиафайлы в WordPress
08.10.2026