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

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

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

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

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

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

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

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

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

  1. Переходим в админке Записи > Все записи.
  2. Затем в правой верхней части экрана нужно открыть вкладку «Настройки экрана» и установить количество отображаемых записей больше или равным числу всех ваших записей. Жмём «Применить».
    как отобразить все записи в админке на одной странице
  3. Отмечаем чекбокс в шапке таблицы, тем самым выбираем все записи на странице.
  4. Из выпадающего списка действий выбираем «Удалить», затем жмём кнопку «Применить».
    удаляем все посты на блоге

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

Через phpMyAdmin

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

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

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

1
2
3
4
DELETE tb1,tb2
FROM {префикс}posts tb1
LEFT JOIN {префикс}postmeta tb2 ON ( tb1.ID = tb2.post_id )
WHERE tb1.post_type = 'post'
Удаляем посты через phpMyAdmin

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

Удаление постов через код при помощи 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();

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

  1. Вставляем код в файл functions.php (вы найдёте его в папке с темой).
  2. Обновляем любую страницу сайта, либо переходим в админку, чтобы убедиться, что записи удалены.
  3. Теперь удаляем код из файла (это можно сделать кстати, нажав комбинацию отмены Ctrl + Z для Windows или Cmd + Z для Мака).

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

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

  1. В первом способе, сразу после того, как мы вывели все записи на одной странице, нам нужно будет воспользоваться фильтром по рубрикам и только потом удалять все записи.
    фильтр записей по рубрикам
  2. Во втором способе просто немного изменится SQL-запрос. В новом запросе вам нужно будет указать ID рубрики, записи из которой хотите удалить.
    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
  3. В третьем способе нам тоже потребуется знать ID категории, его нужно будет добавить к массиву параметров WP_Query.
    $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 )

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

Источник: misha.blog

Миша Рудрастых

Путешествует по миру и рассказывает всем о WordPress лично, у себя в блогах и на курсах в Санкт-Петербурге. Умеет просто объяснять сложные вещи, делает это красиво. Организовывает неплохие WordCamp's, но совсем не умеет слушать чужие доклады.

Добавить комментарий

%d такие блоггеры, как: