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

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

  1. Установите и активируйте плагин.
  2. Перейдите в раздел Bulk Delete в админке.
  3. Выберите фильтр по категории и выберите нужную категорию.
  4. Запустите удаление.

Плюсы плагинов:

  • Простой интерфейс.
  • Безопасность и уведомления.
  • Возможность отложенного удаления.

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

Перед удалением обязательно сделайте резервную копию базы данных — это позволит восстановить данные в случае ошибки.

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

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

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

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

Выводы и рекомендации

Удаление всех постов из категории — задача, которая часто возникает при реорганизации контента. Для её решения можно использовать WP-CLI, собственные функции на PHP или готовые плагины.

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

Функция wpboot_delete_posts_by_category подходит для тех, кто хочет контролировать процесс программно и интегрировать удаление в свои решения.

Плагины Bulk Delete и WP Bulk Delete — удобный вариант для пользователей без навыков программирования.

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

Удаление всех вариаций товара в WooCommerce через код
16.05.2026
Как автоматизировать обновление тем и плагинов в WordPress без рисков
15.03.2026
Как вывести правильное изображение товара в WooCommerce при использовании вариаций
20.04.2026
Как добавить собственные свойства в meta-теги WordPress
10.11.2025
WooCommerce: как использовать хук woocommerce_before_calculate_totals для автоматического изменения цен
07.07.2026