Зачем удалять все посты через 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-функций можно комбинировать для удобства и гибкости управления сайтом.