Крутая идея для блога 💙
Вот готовая шпаргалка-статья, можешь копировать и чуть подправить под свой стиль.
- Как массово удалить записи кастомного типа в WordPress через SQL (phpMyAdmin)
- Шаг 0. Делаем резервную копию базы
- Шаг 1. Определяем префикс таблиц и тип записей
- Шаг 2. Проверяем, что мы удаляем
- Шаг 3. Удаляем мета-данные записей (postmeta)
- Шаг 4. Удаляем связи с таксономиями (term_relationships)
- Шаг 5. Удаляем сами записи из posts
- Шаг 6. Проверяем, что всё удалилось
- Дополнительно (по желанию)
- 1. Комментарии к этим записям
- 2. Yoast SEO Indexables
- Краткая шпаргалка (для копирования)
Как массово удалить записи кастомного типа в WordPress через SQL (phpMyAdmin)
Иногда в админке WordPress висит по несколько тысяч записей кастомного типа — импорт тестовых данных, неудачный парсер и т.д.
Массовое удаление через «Записи → Корзина» может жутко тормозить или просто падать с ошибками.
В таких случаях проще и быстрее удалить всё напрямую из базы через phpMyAdmin.
Ниже — безопасный алгоритм, который:
- удалит сами записи нужного
post_type, - очистит мета-данные (
postmeta), - уберёт связи с таксономиями (рубрики, города, услуги и т.д.).
⚠️ Всё, что ниже, вы делаете на свой страх и риск. Обязательно делайте резервную копию базы перед любыми изменениями.
Шаг 0. Делаем резервную копию базы
- Зайдите в phpMyAdmin.
- Слева выберите нужную базу данных (ту, которая указана в
DB_NAMEвwp-config.php). - Вверху перейдите во вкладку Экспорт (Export).
- Выберите Быстрый (Quick) → формат SQL → Вперёд (Go).
- Сохраните файл
.sqlк себе на компьютер.
Если что-то пойдёт не так — этот файл можно будет импортировать обратно и откатить изменения.
Шаг 1. Определяем префикс таблиц и тип записей
В WordPress таблицы обычно называются так:
wp_postswp_postmetawp_term_relationships- и т.д.
Но префикс wp_ может быть другим, например: stbu1125_, site_, xxx_.
Префикс — это часть до подчёркивания. Например:
wp_posts→ префиксwp_stbu1125_posts→ префиксstbu1125_
Его нужно будет подставлять во все запросы.
Также нам нужно знать slug кастомного типа записей, например:
companyproductreview- и т.д.
Предположим, что:
- префикс таблиц:
wp_ - кастомный тип:
company
Шаг 2. Проверяем, что мы удаляем
Сначала делаем «сухой» просмотр — смотрим, какие записи попадут под удаление.
Во вкладке SQL вставьте:
SELECT ID, post_title, post_type, post_status
FROM wp_posts
WHERE post_type = 'company'
LIMIT 50;
Замените:
wp_posts— на свою таблицу с постами (например,stbu1125_posts);'company'— на свойpost_type, если он другой.
Нажмите Вперёд (Go).
Если в результате вы видите именно те записи, которые хотите удалить — всё ок, идём дальше.
Шаг 3. Удаляем мета-данные записей (postmeta)
Сначала очищаем таблицу postmeta, чтобы не оставить в базе «висячие» данные от удалённых записей.
DELETE pm
FROM wp_postmeta AS pm
JOIN wp_posts AS p ON pm.post_id = p.ID
WHERE p.post_type = 'company';
Что поменять:
wp_postmetaиwp_posts— на свои имена таблиц (с нужным префиксом);'company'— на свой тип записей.
После выполнения вы увидите, сколько строк было удалено — это нормально.
Шаг 4. Удаляем связи с таксономиями (term_relationships)
Теперь убираем связки записей с рубриками, городами, услугами и т.д.
DELETE tr
FROM wp_term_relationships AS tr
JOIN wp_posts AS p ON tr.object_id = p.ID
WHERE p.post_type = 'company';
Точно так же:
wp_term_relationshipsиwp_posts— заменить на свои;'company'— на свойpost_type.
Шаг 5. Удаляем сами записи из posts
Теперь можно смело удалять записи кастомного типа.
DELETE p
FROM wp_posts AS p
WHERE p.post_type = 'company';
Опять:
wp_posts→ ваша таблица с постами;'company'→ ваш тип записей.
Шаг 6. Проверяем, что всё удалилось
Делаем контрольный запрос:
SELECT COUNT(*)
FROM wp_posts
WHERE post_type = 'company';
Если в ответе 0 — значит, все записи типа company удалены.
Дополнительно (по желанию)
1. Комментарии к этим записям
Если у кастомного типа были комментарии, можно почистить и их:
DELETE cm
FROM wp_commentmeta AS cm
JOIN wp_comments AS c ON cm.comment_id = c.comment_ID
JOIN wp_posts AS p ON c.comment_post_ID = p.ID
WHERE p.post_type = 'company';
DELETE c
FROM wp_comments AS c
JOIN wp_posts AS p ON c.comment_post_ID = p.ID
WHERE p.post_type = 'company';
2. Yoast SEO Indexables
Если используете Yoast SEO и у вас есть таблица wp_yoast_indexable, можно удалить оттуда записи для кастомного типа:
DELETE yi
FROM wp_yoast_indexable AS yi
WHERE yi.object_type = 'post'
AND yi.object_sub_type = 'company';
Краткая шпаргалка (для копирования)
Замените wp_ на свой префикс, а 'company' — на нужный post_type:
-- Мета-данные
DELETE pm
FROM wp_postmeta AS pm
JOIN wp_posts AS p ON pm.post_id = p.ID
WHERE p.post_type = 'company';
-- Связи с таксономиями
DELETE tr
FROM wp_term_relationships AS tr
JOIN wp_posts AS p ON tr.object_id = p.ID
WHERE p.post_type = 'company';
-- Сами записи
DELETE p
FROM wp_posts AS p
WHERE p.post_type = 'company';
Можешь просто вставить это в блог, в начало добавить своё вступление и скриншоты из phpMyAdmin — получится полезная статья для тех, кто заваливает сайты импортами 😊




