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