WP-CLI — официальный инструмент командной строки для WordPress. С его помощью можно управлять плагинами, темами, пользователями и базой данных прямо из SSH, без браузера.
Установка WP-CLI
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
# Проверить
wp --version
# WP-CLI 2.10.0
Основные команды
Обновления
# Обновить WordPress core
wp core update
# Обновить все плагины
wp plugin update --all
# Обновить все темы
wp theme update --all
# Обновить всё сразу
wp core update && wp plugin update --all && wp theme update --all
Плагины и темы
# Установить плагин
wp plugin install wordfence --activate
# Деактивировать плагин
wp plugin deactivate contact-form-7
# Список плагинов
wp plugin list
# Удалить плагин
wp plugin delete hello-dolly
Пользователи
# Создать администратора
wp user create admin2 admin2@example.com --role=administrator --user_pass=SecurePass123!
# Сменить пароль
wp user update admin --user_pass=NewPassword456!
# Список пользователей
wp user list --role=administrator
База данных
# Экспорт БД
wp db export backup-$(date +%Y%m%d).sql
# Импорт БД
wp db import backup.sql
# Поиск и замена URL (при миграции!)
wp search-replace 'http://old-domain.com' 'https://new-domain.com' --all-tables
wp search-replace автоматически обрабатывает сериализованные данные PHP — безопаснее ручного SQL UPDATE.Полезные команды для отладки
# Очистить кэш
wp cache flush
# Регенерировать миниатюры
wp media regenerate --yes
# Проверить и восстановить БД
wp db check
wp db repair
# Получить/установить опцию
wp option get siteurl
wp option update blogname "Мой сайт"
| Команда | Что делает |
|---|---|
| wp core update | Обновление WP до последней версии |
| wp plugin update --all | Обновление всех плагинов |
| wp db export | Резервная копия БД |
| wp search-replace | Смена URL при миграции |
| wp cache flush | Очистка кэша |
Частые ошибки при работе с WP-CLI
Почти все ошибки WP-CLI объясняются тремя причинами: неверный путь, права root и разные PHP для CLI и веба.
Error: This does not seem to be a WordPress installation.
WP-CLI ищет файл wp-load.php в текущей директории и выше по дереву. Если команда запущена не из корня сайта, укажите путь явно: wp --path=/var/www/example.com/public_html core version.
Error: YIKES! It looks like you're running this as super user (root).
WP-CLI по умолчанию блокирует запуск от root — изменения владельца файлов от root ломают права для пользователя PHP-FPM. Если вы точно понимаете риск (например, в контейнере с единственным пользователем), добавьте флаг --allow-root. В остальных случаях переключитесь на пользователя сайта: sudo -u www-data wp core version --path=....
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted
Команда wp search-replace на большой базе (десятки тысяч строк postmeta) упирается в лимит памяти PHP CLI — он задаётся отдельно от лимита PHP для веб-сервера, в своём php.ini для CLI-режима. Временно поднимите лимит: php -d memory_limit=512M $(which wp) search-replace ....
WP-CLI или админка: когда что использовать
| Задача | WP-CLI | wp-admin |
|---|---|---|
| Массовое обновление 50+ плагинов | Секунды, один скрипт | Клик по каждому или Bulk actions в браузере |
| Разовая правка текста на странице | Неудобно | Быстрее |
| Автоматизация в CI/CD | Единственный вариант | Недоступно |
| Работа при отключённом фронтенде | Работает всегда | Недоступна при критической ошибке сайта |
Главное преимущество WP-CLI — он обращается к WordPress Core напрямую, минуя HTTP и браузер, поэтому работает даже когда сайт отдаёт белый экран или 500-ю ошибку.
Когда WP-CLI не подходит
На части тарифов виртуального хостинга SSH-доступ вообще не выдаётся — тогда WP-CLI недоступен физически, см. SSH-доступ на хостинге cPanel для проверки, какие тарифы его поддерживают. PHP CLI и PHP для веб-сервера на некоторых конфигурациях — это разные бинарники с разными версиями и настройками php.ini: команда может отработать под PHP 8.3 в CLI, а сайт при этом висит на PHP 7.4 в вебе, и поведение будет отличаться. Для разовой правки одной страницы или проверки одного плагина открыть админку почти всегда быстрее, чем вспоминать синтаксис команды.
Как проверить результат
После массовых изменений через WP-CLI проверяйте не только «команда завершилась без ошибок», но и реальное состояние сайта:
# Проверить, что WordPress установлен и доступен
wp core is-installed; echo "Код выхода: $?"
# Общая информация об окружении
wp cli info
# Проверить состояние сайта после массовых изменений
wp plugin list --status=active
wp option get siteurl
Код выхода 0 после wp core is-installed подтверждает, что инсталляция цела. Ненулевой код в скрипте автоматизации — сигнал остановить выполнение и не запускать следующие шаги (например, деплой) на сломанном сайте.