Почему может понадобиться удалить все посты из категории WordPress
В процессе работы с сайтом на WordPress иногда возникает необходимость массово удалить все записи из определённой категории. Например, если категория устарела, вы хотите переорганизовать структуру контента или очистить тестовые данные. Удаление вручную каждой записи — это долго и неудобно, особенно если постов много.
В этой статье мы рассмотрим, как быстро и безопасно удалить все посты из категории WordPress с помощью кода и плагинов, а также как избежать типичных ошибок при этом процессе.
Удаление всех постов из категории через WP-CLI
Для тех, кто имеет доступ к командной строке сервера, WP-CLI — самый быстрый и надёжный способ массового удаления постов.
Сначала нужно узнать ID категории. Выполните команду:
wp term list category --format=csvНайдите нужную категорию и запомните её ID. Допустим, это ID 12.
Теперь можно удалить все посты из категории 12 командой:
wp post delete $(wp post list --category=12 --field=ID) --forceОпция --force удаляет посты без перемещения в корзину, что ускоряет процесс.
Преимущества метода:
- Очень быстро.
- Можно интегрировать в скрипты.
- Отсутствие риска зависаний на большом количестве постов.
Удаление всех постов из категории через PHP-код: функция wpboot_delete_posts_by_category
Если доступа к WP-CLI нет, можно написать пользовательскую функцию для удаления постов. Ниже пример функции, которую можно добавить в файл functions.php вашей темы или в свой плагин:
function wpboot_delete_posts_by_category($category_slug) {
$args = [
'category_name' => $category_slug,
'posts_per_page' => -1,
'fields' => 'ids',
'post_status' => 'any'
];
$posts = get_posts($args);
if (empty($posts)) {
return 'No posts found in category: ' . $category_slug;
}
foreach ($posts as $post_id) {
wp_delete_post($post_id, true); // true — без корзины
}
return count($posts) . ' posts deleted from category: ' . $category_slug;
}Используйте функцию так:
echo wpboot_delete_posts_by_category('novosti');Где 'novosti' — слаг вашей категории.
Эта функция:
- Получает все ID постов из категории.
- Удаляет каждый пост без перемещения в корзину.
- Возвращает количество удалённых постов.
Важно: перед запуском такой функции сделайте резервную копию базы, чтобы избежать потери важных данных.
Использование плагина для массового удаления постов из категории
Если вы предпочитаете готовые решения, можно использовать плагины с функцией массового удаления. Например:
- Bulk Delete — бесплатный плагин, позволяющий удалять посты по категориям, тегам, статусу и другим параметрам.
- WP Bulk Delete — расширенный вариант с возможностью планировать удаление и фильтровать записи.
Настройки для удаления постов из категории в Bulk Delete:
- Установите и активируйте плагин.
- Перейдите в раздел Bulk Delete в админке.
- Выберите фильтр по категории и выберите нужную категорию.
- Запустите удаление.
Плюсы плагинов:
- Простой интерфейс.
- Безопасность и уведомления.
- Возможность отложенного удаления.
Как избежать проблем при массовом удалении постов из категории WordPress
Перед удалением обязательно сделайте резервную копию базы данных — это позволит восстановить данные в случае ошибки.
Учтите, что удаление постов — необратимая операция, особенно если вы используете функцию или WP-CLI с опцией обхода корзины.
Если на сайте много связанных данных (комментарии, метаданные, пользовательские поля), убедитесь, что удаление происходит корректно и не оставляет «мусор» в базе.
Также проверьте, не используются ли эти посты в меню, виджетах или других частях сайта, чтобы избежать битых ссылок.
И, наконец, если у вас большой сайт с тысячами постов, лучше разбивать удаление на части, чтобы избежать перегрузки сервера или таймаута скриптов.
Выводы и рекомендации
Удаление всех постов из категории — задача, которая часто возникает при реорганизации контента. Для её решения можно использовать WP-CLI, собственные функции на PHP или готовые плагины.
WP-CLI — лучший выбор для опытных пользователей с доступом к серверу, он самый быстрый и надёжный.
Функция wpboot_delete_posts_by_category подходит для тех, кто хочет контролировать процесс программно и интегрировать удаление в свои решения.
Плагины Bulk Delete и WP Bulk Delete — удобный вариант для пользователей без навыков программирования.
Не забывайте о резервном копировании и тестировании на тестовом сайте, прежде чем запускать массовое удаление на боевом.