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‑джобу для планового обслуживания .