Одинаковые записи в WordPress обычно появляются не сами по себе: их создаёт импорт, сбой редактора, повторная синхронизация с внешним источником или неудачная автоматизация. Если дубликатов немного, их можно убрать вручную. Когда речь идёт о сотнях страниц, ручной поиск быстро превращается в рутину с высоким риском удалить не то. В таких случаях лучше сначала понять, какие именно записи считаются дублями, а потом выбрать способ очистки базы.
Ниже разберём практические варианты: как найти одинаковые записи, когда достаточно штатных инструментов WordPress, а когда удобнее и безопаснее работать через базу данных или плагин. Отдельно покажу, как проверить результат, чтобы после очистки не потерять нужный контент.
Какие записи считать дублями
В WordPress под дублями обычно имеют в виду не только полностью одинаковые тексты. На практике это может быть несколько разных ситуаций:
- одинаковый заголовок у двух или более записей;
- полностью совпадающий контент;
- одинаковый slug в URL, если записи создавались импортом или скриптом;
- копии одной и той же записи в разных статусах: черновик, запланированная, опубликованная;
- повторный импорт одного и того же файла или фида.
Перед удалением важно решить, что именно вы считаете дублем. Иногда две записи с одинаковым заголовком нужны осознанно: например, это разные версии материала для разных рубрик или языков. Если не проверить контекст, можно удалить рабочую страницу вместо копии.
Сначала найдите источник проблемы
Если дубликаты продолжают появляться, удаление без диагностики даст только временный эффект. Обычно причина находится в одном из трёх мест: импорт, редактор или синхронизация.
Проверьте, не запускается ли повторно импорт из внешнего источника. Это часто бывает при импорте через RSS, CSV, API или через планировщик задач. Если запись создаётся автоматически, скрипт должен проверять уникальный идентификатор внешнего материала, а не только заголовок.
Если дубли появляются после ручного редактирования, посмотрите, не сохраняет ли редактор запись дважды из-за конфликта с плагином, кэшем или нестабильным соединением. Такое бывает, когда пользователь нажимает кнопку сохранения повторно, не дождавшись ответа сервера.
При синхронизации с внешней системой причина обычно в том, что интеграция не умеет сопоставлять уже существующую запись с новой. Тогда при каждом обмене создаётся новая копия вместо обновления старой.
Как удалить дубли вручную, если их немного
Если одинаковых записей мало, проще всего удалить их через админку WordPress. Этот способ не требует доступа к базе данных и подходит, когда нужно быстро навести порядок без сложных операций.
- Откройте Записи или Страницы в админке.
- Отсортируйте список по дате или найдите одинаковые заголовки через поиск.
- Откройте каждую подозрительную запись и сравните содержимое, дату публикации, рубрику и автора.
- Оставьте одну основную версию, остальные отправьте в корзину.
- После проверки очистите корзину, если уверены, что копии больше не нужны.
Такой способ безопасен, но плохо подходит для больших сайтов. Если дублей десятки или сотни, вы потратите слишком много времени и всё равно рискуете пропустить часть копий.
Когда удобнее работать через базу данных
Если дубликатов много, быстрее и надёжнее сначала найти их в базе, а уже потом удалять лишнее. Но здесь нужно быть аккуратным: любое массовое удаление через SQL может повредить сайт, если запрос составлен неверно. Перед изменениями обязательно сделайте резервную копию базы данных.
Самый безопасный сценарий — сначала вывести список подозрительных записей, а не удалять их сразу. Например, если вы хотите найти одинаковые заголовки среди записей, можно использовать запрос, который покажет повторяющиеся названия:
SELECT post_title, COUNT(*) AS cnt
FROM wp_posts
WHERE post_type = 'post' AND post_status NOT IN ('auto-draft', 'trash')
GROUP BY post_title
HAVING cnt > 1
ORDER BY cnt DESC;Этот запрос работает с таблицей wp_posts, но префикс wp_ у вас может быть другим. Он покажет только повторяющиеся заголовки, а не готовые к удалению записи. Дальше нужно открыть найденные записи и понять, какая из них основная.
Если нужно удалить именно полные копии, а не просто записи с одинаковым названием, логика зависит от того, по какому признаку вы их определяете. В реальных проектах чаще всего ориентируются на связку заголовок + дата + источник импорта, либо на внешний идентификатор, который хранится в метаполях. Универсального безопасного SQL-запроса для всех сайтов здесь нет: сначала нужно понять, по какому правилу ваш сайт создаёт дубли.
Удаление через плагин: когда это оправдано
Если вы не хотите вручную работать с SQL, можно использовать плагины для поиска и удаления дублей. Это разумный вариант, когда:
- дубликатов много, но структура сайта стандартная;
- нужно удалить записи по повторяющемуся заголовку или другому простому признаку;
- вы не хотите править базу вручную;
- на сайте есть человек, который уверенно работает только через админку.
При выборе плагина смотрите не на обещание «удалить всё в один клик», а на то, умеет ли он сначала показать список найденных записей и поддерживает ли нужный тип контента. Для сложных импортов и кастомных полей иногда всё равно приходится проверять результат вручную.
Если у вас уже установлен инструмент для очистки сайта, например Clearfy Pro, проверьте, есть ли в нём функции для удаления дублей и чистки базы. Но даже в этом случае не отключайте резервное копирование: массовое удаление нельзя откатывать без бэкапа.
Как удалить дубли безопасно, если нужно массовое удаление
Когда записей много, правильный порядок действий важнее самого инструмента. Я бы делал так:
- Сделать полную резервную копию базы данных и файлов сайта.
- Определить правило, по которому запись считается дублем: заголовок, slug, внешний ID, совпадающий текст.
- Сначала выгрузить или отфильтровать список подозрительных записей.
- Оставить одну основную версию каждой группы дублей.
- Удалить лишние записи небольшими партиями, а не всем массивом сразу.
- Проверить корзину, кэш и фронтенд сайта.
Если вы работаете через phpMyAdmin или другой SQL-интерфейс, не удаляйте записи без предварительного просмотра результата. Сначала выполните запрос на выборку, убедитесь, что он возвращает именно те записи, которые нужно убрать, и только потом переходите к удалению. Для больших сайтов это особенно важно: ошибка в условии может снести не только дубли, но и нормальные публикации.
Что проверить после очистки
После удаления дублей не ограничивайтесь просмотром админки. Нужно убедиться, что сайт остался целым и что лишние записи действительно исчезли.
- Откройте несколько удалённых URL и проверьте, что они не доступны.
- Посмотрите список записей в админке и убедитесь, что осталась одна версия каждого материала.
- Проверьте рубрики, метки и произвольные поля у оставшихся записей.
- Очистите кэш, если сайт использует кэширование на уровне плагина, сервера или CDN.
- Если записи были в sitemap, обновите карту сайта и проверьте, что в ней нет старых дублей.
Если удалённые записи всё ещё открываются, причина обычно в кэше или в том, что вы удалили не ту сущность: например, запись осталась в корзине, а не была удалена окончательно. Иногда похожая проблема возникает и с вложениями, если дубли были связаны не с записями, а с медиафайлами.
Как не допустить повторного появления дублей
После очистки стоит сразу закрыть источник проблемы, иначе через неделю база снова захламится. Для импорта это значит проверку уникального ключа: внешний ID, URL источника или другой стабильный идентификатор. Для ручного редактирования — ограничение повторной публикации и контроль прав пользователей. Для синхронизации — настройку обновления существующей записи вместо создания новой.
Если дубли появляются из-за контентных операций на сайте, полезно проверить, не создаёт ли их автоматический импорт по расписанию. В таких случаях проблема обычно не в WordPress как таковом, а в логике интеграции. Пока она не исправлена, удаление будет только временной уборкой.
Если вам нужен не разовый ручной разбор, а регулярная чистка сайта и базы, имеет смысл использовать инструмент, который помогает находить и удалять лишнее без прямой работы с SQL. Но даже тогда базовое правило не меняется: сначала резервная копия, потом поиск дублей, затем удаление и проверка результата.