Как удалить все посты в WordPress через WP-CLI: эффективное решение для очистки сайта

Зачем удалять все посты через WP-CLI: преимущества и сценарии использования

Иногда возникает необходимость быстро очистить сайт WordPress от всех записей — например, при разработке, тестировании или перед началом нового проекта на базе существующего контента. Удаление постов вручную через админ-панель занимает много времени и не эффективно, особенно если записей тысячи. WP-CLI — мощный инструмент командной строки для управления WordPress, который позволяет автоматизировать такие задачи быстро и безопасно.

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

Подготовка к удалению: создание резервной копии и проверка окружения

Перед выполнением массового удаления необходимо убедиться, что у вас есть полная резервная копия базы данных и файлов сайта. Это позволит восстановить данные в случае ошибки. Для создания резервной копии можно использовать плагины вроде UpdraftPlus или сделать дамп базы данных с помощью команды:

wp db export backup.sql

Также проверьте, что WP-CLI установлен и работает корректно. Для этого выполните команду:

wp --info

Если WP-CLI не установлен, его можно установить согласно официальной документации на сайте wp-cli.org.

Удаление всех постов: базовая команда и ее особенности

Чтобы удалить все посты (тип записи post) без возможности восстановления, используйте команду:

wp post delete $(wp post list --post_type='post' --format=ids) --force

Разберём ее по частям:

  • wp post list --post_type='post' --format=ids — выводит список ID всех записей типа пост в виде через пробел, что подходит для передачи в следующую команду.
  • wp post delete ... --force — удаляет указанные записи без перемещения в корзину.

Если записей очень много, команда может превысить лимит длины строки в консоли. В таком случае можно использовать пакетный подход:

wp post list --post_type='post' --format=ids | xargs -d ' ' -n 50 wp post delete --force
<

Эта команда удалит посты порциями по 50 штук, что стабилизирует работу и предотвратит ошибки.

Удаление записей определённого статуса и типа

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

wp post list --post_type='post' --post_status='publish' --format=ids

Аналогично можно указать другие типы записей, например, page для страниц, или пользовательские типы, указав их в параметре --post_type.

Как восстановить удалённые записи: советы и использование корзины

Если вы хотите сначала отправить записи в корзину, а не удалять безвозвратно, просто уберите параметр --force:

wp post delete $(wp post list --post_type='post' --format=ids)

Записи попадут в корзину, откуда их можно будет восстановить через админ-панель или WP-CLI командой:

wp post restore <ID_записи>

Чтобы очистить корзину окончательно, используйте:

wp post delete $(wp post list --post_status=trash --format=ids) --force

Автоматизация удаления постов в плагине или скрипте

Если вы хотите интегрировать функционал удаления всех постов в собственный плагин для WordPress с доменом wpstock.ru, можно использовать следующий пример функции:

function wpstock_delete_all_posts() {
    $args = array(
        'post_type'      => 'post',
        'posts_per_page' => -1,
        'fields'         => 'ids',
        'post_status'    => 'any',
    );

    $posts = get_posts($args);

    if (!empty($posts)) {
        foreach ($posts as $post_id) {
            wp_delete_post($post_id, true); // true - без корзины
        }
    }
}

Эта функция получает ID всех постов и удаляет их без перемещения в корзину. Вызывать ее можно по событию или вручную, например, через админ-страницу плагина.

Безопасность и ограничения

При автоматическом удалении убедитесь, что функция вызывается только администраторами или в контролируемых условиях, чтобы избежать случайного удаления данных. Можно добавить nonce и проверку прав пользователя.

Заключение

WP-CLI предоставляет мощные средства для массового управления записями WordPress. Удаление всех постов через WP-CLI — это быстрый и надежный способ очистить сайт, особенно при большом объеме данных. Главное — всегда делать резервные копии и использовать параметры с умом, чтобы не потерять важный контент. Варианты с массовым удалением через WP-CLI и с помощью PHP-функций можно комбинировать для удобства и гибкости управления сайтом.

Как реализовать автоматический редирект после входа в WordPress
27.01.2026
Как изменить URL страницы в WordPress без перенаправления
22.02.2026
Как создать автоматическое отображение отзывов в WordPress
15.01.2026
Автоматическое удаление неактивных вариаций товаров в WooCommerce через код
13.05.2026
Запрет доступа к страницам WooCommerce для неавторизованных пользователей
20.04.2026