Удаляем много постов в категории в WordPress

В очередной раз столкнулся с необходимостью удалить большое количество постов одной категории в WordPress. Но в этот раз к-во постов было огромным.

В базе данные поста хранятся в нескольких таблицах. Раньше делал такое в несколько запросов. В этот раз, с моим неторопливым интернетом, это было бы не слишком удобным.

Посмотрел что есть уже из готового, в плагинах. На сайте вордпресса для этого предлагают использовать Bulk Delete. ~25тыс постов он не осилил.

В общем получился вот такой SQL запрос, «wp_» нужно заменить на ваш префикс:


DELETE a,b,c,d
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON ( a.ID = b.object_id )
LEFT JOIN wp_postmeta c ON ( a.ID = c.post_id )
LEFT JOIN wp_term_taxonomy d ON ( d.term_taxonomy_id = b.term_taxonomy_id )
LEFT JOIN wp_terms e ON ( e.term_id = d.term_id )
WHERE e.term_id = _category_id_

Удалено строк: 12450. ( запрос занял 36.5197 сек. )
Удалено строк: 51990. ( запрос занял 150.1790 сек. )

Стоит еще помнить о комментариях. К счастью, в моем случае их не было.

Метки: , ,
Автор: dimas

1 комментарий к “Удаляем много постов в категории в WordPress

  • Доброго времени суток !!! А что нужно изменить в запросе, чтобы он не удалял саму рубрику, а то удаляет все записи в ней и саму рубрику тоже... вот надо чтобы было так... записи удалялись а сама рубрика оставалась... пустой естественно... :)
    Заранее спасибо за ответ !!!