Как использовать WP-CLI для массового управления записями в WordPress

Диагностика задачи: зачем нужен массовый контроль над записями

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

Что такое WP-CLI и как его установить

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

wp --info

Если команда не найдена, установите WP-CLI по инструкции с официального сайта https://wp-cli.org/#installing. На большинстве хостингов WP-CLI уже доступен по SSH.

Основные команды WP-CLI для управления записями

WP-CLI использует команду wp post для работы с записями. Ниже список ключевых операций:

  • wp post list — выводит список записей с фильтрацией;
  • wp post delete ID1 ID2 — удаляет записи по ID;
  • wp post update ID --post_status=private — изменяет статус записи;
  • wp post meta update ID meta_key meta_value — обновляет метаданные записи;
  • wp post term set ID category 'Новое' — меняет категорию записи.

Пример: получить список опубликованных записей старше года

wp post list --post_type=post --post_status=publish --date_query_column=post_date --date_query_after="1 year ago" --format=ids

Команда выведет ID всех опубликованных записей, созданных более года назад.

Пошаговое решение: массовое удаление старых записей

Шаг 1. Сделайте резервную копию базы данных

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

Шаг 2. Получите список ID записей для удаления

wp post list --post_type=post --post_status=publish --date_query_column=post_date --date_query_before="1 year ago" --format=ids > old_posts.txt

Команда сохранит ID в файл old_posts.txt — удобно для проверки.

Шаг 3. Проверьте список и подкорректируйте фильтры при необходимости

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

Шаг 4. Удалите записи

wp post delete $(cat old_posts.txt) --force

Флаг --force удалит записи без помещения в корзину.

Проверка результата после удаления

Чтобы убедиться, что записи удалены:

wp post list --post_type=post --post_status=publish --date_query_column=post_date --date_query_before="1 year ago" --format=ids

Команда не должна выводить ID удалённых записей. Также проверьте сайт и админ-панель.

Частые ошибки при работе с WP-CLI и как их исправить

  • Ошибка "wp: command not found": Проверьте, установлен ли WP-CLI и доступен ли он в PATH.
  • Неверные фильтры даты: Формат даты должен быть совместим с WP_Query, используйте ключи --date_query_before и --date_query_after корректно.
  • Команда не удаляет записи: Возможно, не указан флаг --force, либо записи защищены плагинами безопасности.
  • Перегрузка сервера при массовых операциях: Делайте удаление по партиям, например, по 100 записей за раз.

Практические советы по безопасности и производительности

  • Всегда делайте резервную копию базы перед массовыми операциями.
  • Проводите операции в низкую нагрузку сайта — ночью или в часы минимального трафика.
  • Используйте WP-CLI в терминале с ограниченным доступом, чтобы избежать компрометации.
  • Для больших сайтов разбивайте массовые операции на партии с помощью скриптов или bash-циклов.
  • Если часто требуется массовое управление, настройте cron-задачи с WP-CLI для автоматизации.

Сравнение вариантов массового управления записями

МетодПлюсыМинусыКогда использовать
Админ-панель WordPress (массовое редактирование)Простота, визуальный контрольОграниченный функционал, медленно при большом объемеМалое количество записей
WP-CLIБыстро, гибко, подходит для автоматизацииТребует навыков работы с командной строкойБольшие объемы, задачи автоматизации
Плагины (например, Bulk Delete)Удобный интерфейс, расширенные фильтрыДополнительная нагрузка, риск конфликтовСредние объемы, нет навыков CLI

Дополнительный пример: массовое обновление статуса записей

wp post update $(wp post list --post_type=post --post_status=draft --format=ids) --post_status=publish

Данная команда публикует все записи в статусе черновика.

Как добавить полезные типографические знаки в WordPress
13.02.2026
Как удалить или изменить атрибуты продуктов WooCommerce через код
23.05.2026
Как удалить закрепленные сообщения в WordPress
28.01.2026
Удаление неиспользуемых видов постов в WordPress: практическое руководство
06.01.2026
Как удалить метаданные глобально в WordPress
07.03.2026