WP‑CLI — это способ управлять WordPress в разы быстрее: обновления, миграции, администрирование и автоматизация выполняются одной командой без входа в админку, что экономит время и снижает риск человеческих ошибок . Ниже — практическое руководство 2025 года с примерами и готовыми сниппетами, применимое на продакшене, стейджинге и в Docker .
Что такое WP‑CLI
WP‑CLI — официальный интерфейс командной строки для WordPress, охватывающий ядро, плагины, темы, пользователей, БД, мультисайт, кэш и крон, а также инструменты разработки и профилирования . Его удобно применять вместо админки для массовых операций, миграций, CI/CD и повторяемых задач, включая запуск PHP‑кода через eval/shell и генерацию кода через scaffold .
- Кейс 1: миграция домена — экспорт БД, перенос файлов, wp search-replace, сброс кэша и проверка пермалинков за минуты .
- Кейс 2: еженедельные обновления — cron запускает скрипт с core/plugin/theme update, кеш‑флашем и отчетом в лог .
- Кейс 3: мультисайт — подготовка сети, добавление сайтов и управление супер‑админами командами site и super-admin .
Установка и требования
WP‑CLI — одиночный Phar, работающий на Linux/macOS и через WSL на Windows; для работы нужен PHP и доступ к WordPress файлам и БД . Установка типова: скачать Phar, сделать исполняемым и положить в /usr/local/bin/wp; автодополнение bash повышает скорость и снижает опечатки .
- Базовая установка с автодополнением на серверах cPanel: загрузка wp-cli.phar, mv в /usr/local/bin/wp и подключение wp-completion.bash к bash_completion .
- Алиасы позволяют описать удалённые и локальные окружения (например, @prod, @stage) и запускать команды пачками по нескольким сайтам .
- В Docker удобно выполнять команды через docker exec внутри контейнера, типичный путь WordPress: /var/www/html .
Быстрый старт
Проверка окружения, скачивание ядра, создание конфигурации и установка — типовой стартовый сценарий .
- Проверка версии и info
# Узнать версию и параметры окружения WP-CLI
wp cli version && wp cli info
- Быстрая установка WordPress
# Скачать ядро и развернуть wp-config.php
wp core download
wp config create --dbname=wp --dbuser=wp --dbpass=secret --dbhost=localhost
wp core install --url=https://example.com --title="Site" --admin_user=admin --admin_password=StrongPass! --admin_email=admin@example.com
Частые команды с примерами
Ядро, плагины, темы, пользователи, контент, медиа, опции, пермалинки, кэш и крон — базовый набор для админки через терминал .
- Основные операции
# Ядро и обновления
wp core version && wp core update
# Плагины и темы
wp plugin update --all
wp theme update --all
# Пользователи и посты
wp user create editor editor@example.com --role=editor
wp post create --post_type=page --post_title="About" --post_status=publish
- База данных и поиск‑замена
# Экспорт / импорт базы
wp db export backup.sql
wp db import backup.sql
# Смена домена после переноса
wp search-replace 'https://old.example.com' 'https://new.example.com' --skip-columns=guid
- i18n, scaffold, профайлинг, техобслуживание, встроенный сервер, интерактивные PHP‑сессии
# Генерация заготовок и переводов, профилирование и обслуживание
wp scaffold plugin my-tools
wp i18n make-pot . languages/my-tools.pot
wp profile stage run
wp maintenance-mode activate
wp server --host=127.0.0.1 --port=8080
wp shell/* Your code... */
- Кэш и крон
# Сброс кэша и ручной запуск события крона
wp cache flush
wp cron event run --due-now
Сценарии «копируй и используй»
Практические цепочки команд для типичных задач продакшена и стейджинга .
- Массовые обновления с «страховкой»
# ВНИМАНИЕ: перед обновлениями делайте бэкап БД и файлов
wp db export pre-update.sql
wp core update && wp plugin update --all && wp theme update --all
wp cache flush && wp cron event run --due-now
- Перенос домена и БД
# Экспорт, импорт и search-replace домена
wp db export pre-migrate.sql
wp db import new-env.sql
wp search-replace 'http://old' 'https://new' --skip-columns=guid
- Стейджинг, сброс пароля, фиктивные данные
# Сброс пароля админа и генерация демо-контента
wp user update admin --user_pass='NewStrongPass!'
wp scaffold post 20 --post_type=post --post_status=publish
- Мультисайт за минуты
# Инициализация сети и создание сайта
wp core multisite-convert --title="WP Network"
wp site create --slug=shop --title="Shop" --email=admin@example.com
Работа с Docker
WP‑CLI можно запускать в контейнере или подключаться извне; фиксируйте типовые пути и переменные окружения .
- Подключение и выполнение
# Вход в контейнер и запуск WP-CLI
docker exec -it wordpress bash
wp search-replace 'http://old' 'https://new' --path=/var/www/html
Частые ошибки: отсутствие wp-config в /var/www/html, неправильный DB_HOST для связки с db‑контейнером, права на wp-content; решаются корректной ENV‑конфигурацией и проверкой wp cli info
Автоматизация и безопасность
Скрипты и крон формируют повторяемые, идемпотентные рутины; храните секреты в переменных окружения, ограничивайте sudo и роли .
- Ночной бэкап и обновления
# backup-update.sh: бэкап БД, обновления, очистка кэша
set -e
wp db export "backup-$(date +%F).sql"
wp core update && wp plugin update --all && wp theme update --all
wp cache flush
Добавьте в cron: 0 3 * * * /bin/bash /path/backup-update.sh .
Идемпотентность: скрипты должны безопасно повторяться — проверяйте «существует ли ресурс» перед созданием, используйте флаги и явные версии
Таблица команд
| Команда | Что делает | Пример | Когда применять |
|---|---|---|---|
| wp core update | Обновляет ядро WordPress | wp core update | Регулярные обновления безопасности |
| wp plugin update —all | Обновляет все плагины | wp plugin update —all | Перед релизом/по расписанию |
| wp theme update —all | Обновляет все темы | wp theme update —all | Синхронизация окружений |
| wp db export | Экспорт БД в файл | wp db export backup.sql | Бэкап перед изменениями |
| wp db import | Импорт БД из файла | wp db import backup.sql | Восстановление/стейджинг |
| wp search-replace | Поиск‑замена строк в БД | wp search-replace ‘old’ ‘new’ | Перенос домена/SSL |
| wp cache flush | Очистка кэша | wp cache flush | После миграций/обновлений |
| wp cron event run | Запуск событий крона | wp cron event run —due-now | Отладка задач |
| wp option get | Получить опцию | wp option get siteurl | Проверка конфигурации |
| wp rewrite flush | Сброс пермалинков | wp rewrite flush —hard | Починка 404 |
| wp user create | Создать пользователя | wp user create dev dev@ex.com —role=editor | Доступ команде |
| wp post create | Создать контент | wp post create —post_type=page —post_title=FAQ | Наполнение |
| wp media regenerate | Регенерация миниатюр | wp media regenerate —yes | После смены темы |
| wp maintenance-mode activate | Включить режим обслуживания | wp maintenance-mode activate | Работы на сайте |
| wp profile stage run | Профилирование этапов загрузки | wp profile stage run | Поиск «узких мест» |
| wp scaffold plugin | Сгенерировать плагин | wp scaffold plugin my-tools | Быстрый старт разработки |
| wp server | Локальный сервер | wp server —port=8080 | Локальная отладка |
| wp shell | Интерактивный PHP | wp shell | Быстрые проверки кода |
| wp site create | Добавить сайт в сети | wp site create —slug=shop | Мультисайт масштабирование |
| wp super-admin add | Добавить супер‑админа | wp super-admin add admin | Управление сетью |
Ошибки и решения
Типовые проблемы решаются проверкой путей, окружения и прав.
- Нет wp-config: выполните wp config create и укажите корректные DB‑параметры; проверьте wp cli info для путей .
- Неверный путь к PHP/MySQL: используйте абсолютные пути или скорректируйте PATH; для Docker — wp –path=/var/www/html .
- Таймауты/память: запускайте команды по частям, повышайте лимиты PHP, избегайте тяжелых search-replace без нужды .
- Права доступа: убедитесь, что пользователь имеет права на файлы wp-content и каталоги загрузок .
Расширение командами
Собственные команды регистрируются через WP_CLI::add_command, поддерживаются классы, функции и замыкания, с хуками before/after и synopsis .
// Регистрация кастомной команды: wp tools hello
if (defined('WP_CLI') && WP_CLI) {
WP_CLI::add_command('tools hello', function($args, $assoc){
\WP_CLI::success('Hello from tools!');
});
}
Этот подход удобен для внутренних тулов: миграции, генерация контента, интеграции CI .
Docker: быстрые шпаргалки
- Комбинируйте docker exec с wp для операций внутри контейнера WordPress .
# Войти в контейнер и выполнить команды WP-CLI
docker exec -it wordpress bash
wp core update --path=/var/www/html && wp plugin update --all --path=/var/www/html
После переноса домена выполняйте search-replace и сброс кэша, проверяйте пермалинки .
Операции «на каждый день»
- Мини‑набор, который пригодится постоянно, особенно в автоматизации .
# Ежедневные команды
wp core update
wp plugin update --all
wp theme update --all
wp db export daily.sql
wp search-replace 'http://old' 'https://new' --skip-columns=guid
wp cron event run --due-now
wp cache flush
Этот блок легко включается в крон или CI‑джобу для планового обслуживания .