wpupgrade.ru wordpress WP Upgrade

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

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

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

Подготовка к удалению: как выбрать посты для удаления

Перед удалением важно точно определить, какие посты нужно удалить, чтобы не потерять важные данные. WP-CLI позволяет фильтровать записи по типу, статусу, дате, таксономиям и метаполям.

Для проверки подходящих постов используйте команду:

wp post list --post_type=post --post_status=draft --fields=ID,post_title,post_date --date_query_column=post_date --date_query_after=2023-01-01

Эта команда выведет список всех черновиков, созданных после 1 января 2023 года. Вы можете адаптировать параметры под свои условия.

Пошаговое решение: массовое удаление постов через WP-CLI

1. Сделайте полную резервную копию базы данных. Это обязательный шаг перед массовыми изменениями.

2. Проверьте список постов, которые будут удалены, с помощью wp post list с нужными фильтрами.

3. Выполните удаление постов командой:

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

Здесь:

  • $(wp post list ... --format=ids) – возвращает ID постов для удаления;
  • --force – удаляет посты без отправки в корзину (безвозвратно).

Если хотите сначала проверить без удаления, замените wp post delete на просто вывод списка ID.

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

После выполнения команды проверьте, что посты действительно удалились:

wp post list --post_type=post --post_status=draft --format=ids

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

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

  • Ошибка: WP-CLI не найден или команда не выполняется
    Убедитесь, что WP-CLI установлен и доступен в текущем окружении (ssh). Проверьте wp --info.
  • Ошибка: удаляются не те посты
    Всегда сначала проверяйте список постов командой wp post list с теми же фильтрами, которые будете удалять.
  • Ошибка: недостаточно прав
    Запускайте команду от имени пользователя с правами администратора WordPress и доступа к базе данных.
  • Ошибка: база данных заблокирована или медленно отвечает
    На больших сайтах делайте удаление по частям, используя параметр --number=100 и циклы bash.

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

  • Резервное копирование: перед массовым удалением всегда делайте бэкап базы данных через WP-CLI (wp db export) или внешний инструмент.
  • Удаление по частям: чтобы избежать таймаутов, разбивайте удаление на порции, например:
for i in {1..10}; do
  wp post delete $(wp post list --post_type=post --post_status=draft --format=ids --number=100 --offset=$(( (i - 1) * 100 ))) --force
  sleep 2
 done
  • Безвозвратное удаление: используйте --force только если уверены, что посты не нужны. Иначе они попадут в корзину и будут занимать место.
  • Логи и аудит: ведите логи команд WP-CLI, чтобы можно было отследить, какие записи удалялись и когда.

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

МетодПреимуществаНедостатки
Удаление через админку WordPressПростой интерфейс, не требует технических знанийНеэффективно при большом количестве постов, высокая нагрузка на сервер
Удаление через WP-CLIБыстро, можно фильтровать и автоматизировать, низкая нагрузкаТребует доступа по SSH и базовых знаний командной строки
Удаление через SQL-запросыСамый быстрый способ, можно сделать точечные выборкиРиск повреждения данных, требует знаний SQL, сложно для массового удаления с учётом связей и кэширования
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее