Как удалить все записи, страницы, комментарии на блоге

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

Иногда бывает нужно очистить блог от контента, причин на самом деле может быть много:

Эти несколько причин — первое, что пришло мне на ум.

Итак, в этом посту мы рассмотрим все варианты (через админку, через phpMyAdmin, через код) удаления записей, страниц и комментариев на сайте.

Как удалить все посты (записи)?

Расмотрим три способа удаления постов.

Через админку

Самый простой способ, но может не работать, если в вашей теме или в плагинах слишком много навешано на фильтр delete_post.

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

Через phpMyAdmin

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

Прежде, чем запускать какой-либо из представленных здесь SQL-запросов, делайте резервные копии! А также убедитесь, что префикс таблиц в запросах соответствует префиксу в вашей базе данных (если не уверены, подставьте стандартный — wp_, хуже от этого не будет, если только вашу базу данных не используют несколько сайтов на WordPress).

Итак, открываем phpMyAdmin, затем выбираем базу данных, использующуюся на сайте, переходим на вкладку SQL и вставляем туда следующее:

DELETE tb1,tb2
FROM {префикс}posts tb1
LEFT JOIN {префикс}postmeta tb2 ON ( tb1.ID = tb2.post_id )
WHERE tb1.post_type = 'post'

Жмём «ОК», чтобы выполнить запрос.

Удаление постов через код при помощи WP_Query и wp_delete_post()

Для тех, кто хорошо знаком с WP_Query, возможно этот способ окажется даже более удобным чем два других, потому что с помощью параметров WP_Query вы можете очень точно указать, какие посты хотите удалить.

Функция же wp_delete_post() позволяет удалить пост, ID которого указан в параметре.

$params = array(
	'posts_per_page' => -1, // все посты
	'post_type'	=> 'post' // записи, этот параметр можно не указывать, так как post - стоит по умолчанию
);
$q = new WP_Query( $params );
if( $q->have_posts() ) : // если посты по заданным параметрам найдены
	while( $q->have_posts() ) : $q->the_post();
		wp_delete_post( $q->post->ID, true ); // второй параметр функции true означает, что пост будут удаляться, минуя корзину
	endwhile;
endif;
wp_reset_postdata();

Как работать с этим кодом?

Можно ли удалить все записи из какой-то конкретной рубрики?

Да конечно можно. Делается всё почти точно так же, как описано выше, только с небольшими изменениями.

DELETE tb1,tb2,tb3
FROM {префикс}posts tb1
LEFT JOIN {префикс}term_relationships tb2 ON ( tb1.ID = tb2.object_id )
LEFT JOIN {префикс}postmeta tb3 ON ( tb1.ID = tb3.post_id )
WHERE tb2.term_taxonomy_id = 16
$params = array(
	'posts_per_page' => -1, // все записи
	'post_type'	=> 'post', // записи, этот параметр можно не указывать, так как post - стоит по умолчанию
	'cat'	=> 43
);

Как удалить все страницы

Удаление страниц в вордпресс не особо отличается от удаления записей, ведь по сути страницы — это те же посты, но другого типа (page).

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

В первом способе вам надо будет перейти не в Записи > Все записи, а в Страницы > Все страницы (в принципе это должно быть очевидно).

Во втором способе изменится только четвёртая строчка SQL-запроса, т.е. сначала скопируйте описанный выше запрос, а затем замените его последнюю строку на:

WHERE tb1.post_type = 'page'

Если вы решите использовать третий способ для удаления страниц, тогда вам нужно будет использовать следующие параметры для WP_Query:

$params = array(
	'posts_per_page' => -1, // все страницы
	'post_type'	=> 'page' // страницы
);

Удаляем комментарии на блоге

Теперь давайте посмотрим, как одним махом удалить все комментарии с сайта на WP. Здесь я рассмотрю два способа — через админку и через phpMyAdmin.

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

Итак, первый способ. Переходим в админке в Комментарии, при помощи настроек экрана устанавливаем, чтобы все комментарии отображались на одной странице, затем массово выделяем их галочкой, из выпадающего меню выбираем «Удалить» и жмём кнопку «Применить».

Второй способ. Открываем в phpMyAdmin вкладку SQL для текущей базы данных на сайте и выполняем:

DELETE tb1,tb2
FROM {префикс}comments tb1
LEFT JOIN {префикс}commentmeta tb2 ON ( tb1.comment_ID = tb2.comment_id )

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

Смотрите также

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии