Если вы до сих пор обновляете плагины через админку WordPress, делаете бэкапы вручную и кликаете по кнопкам при миграции сайта — вы теряете огромное количество времени. WP-CLI (WordPress Command Line Interface) — это консольный инструмент, который позволяет управлять WordPress без браузера, автоматизировать рутинные задачи и выполнять операции в 10 раз быстрее.
В этом руководстве мы разберём установку WP-CLI, 30+ полезных команд для повседневной работы, автоматизацию через bash-скрипты и интеграцию с cron. После этой статьи вы больше никогда не вернётесь к кликам в админке.
Что такое WP-CLI и зачем он нужен
WP-CLI — это официальный инструмент командной строки для управления WordPress. Он поддерживает все основные операции: обновление ядра и плагинов, управление пользователями, работу с базой данных, поиск и замену, экспорт/импорт и многое другое.
Преимущества WP-CLI:
- Скорость: обновление 20 плагинов одной командой вместо 20 кликов
- Автоматизация: можно встроить в bash-скрипты и cron
- Массовые операции: управление десятками сайтов через алиасы
- SSH-доступ: можно управлять сайтом без входа в админку
- Отладка: быстрый поиск проблем через консоль
Шаг 1: Установка WP-CLI
Подключитесь к серверу по SSH и выполните:
# Скачиваем Phar-файл
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
# Проверяем, что работает
php wp-cli.phar --info
# Делаем исполняемым и перемещаем в PATH
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
# Проверяем установку
wp --infoАвтодополнение команд (bash-completion)
Для удобства добавьте автодополнение по Tab:
wget https://raw.githubusercontent.com/wp-cli/wp-cli/master/utils/wp-completion.bash
source wp-completion.bash
# Или добавьте в ~/.bashrc для постоянного использования
echo 'source /path/to/wp-completion.bash' >> ~/.bashrcШаг 2: Базовые команды управления ядром
Все команды WP-CLI нужно выполнять из корня сайта WordPress. Если вы не в корне, используйте флаг --path.
# Переходим в корень сайта
cd /var/www/wordpress
# Проверяем версию WordPress
wp core version
# Проверяем наличие обновлений
wp core check-update
# Обновляем ядро (безопасно, с бэкапом БД)
wp core update
# Обновляем базу данных после обновления ядра
wp core update-db
# Скачиваем свежую версию WordPress (для чистой установки)
wp core download --locale=ru_RUШаг 3: Управление плагинами и темами
Это одна из самых востребованных функций WP-CLI — массовое обновление.
Работа с плагинами:
# Список всех плагинов
wp plugin list
# Список активных плагинов
wp plugin list --status=active
# Обновление одного плагина
wp plugin update woocommerce
# Обновление всех плагинов
wp plugin update --all
# Установка нового плагина
wp plugin install redis-cache
# Активация плагина
wp plugin activate redis-cache
# Деактивация плагина (полезно при WSOD!)
wp plugin deactivate elementor
# Удаление плагина
wp plugin delete hello
# Поиск плагина в репозитории
wp plugin search "contact form"Работа с темами:
# Список всех тем
wp theme list
# Установка темы
wp theme install flavor
# Активация темы
wp theme activate flavor
# Обновление всех тем
wp theme update --all💡 Совет: Если сайт упал с белым экраном смерти, через WP-CLI можно отключить все плагины одной командой:
wp plugin deactivate --allШаг 4: Работа с базой данных
WP-CLI даёт прямой доступ к базе данных WordPress без phpMyAdmin.
# Выполнить SQL-запрос
wp db query "SELECT COUNT(*) FROM wp_posts WHERE post_status='publish'"
# Оптимизация таблиц (аналог OPTIMIZE TABLE)
wp db optimize
# Создание резервной копии БД
wp db export backup_$(date +%Y-%m-%d).sql
# Восстановление из бэкапа
wp db import backup_2026-06-05.sql
# Проверка размера БД
wp db size
# Интерактивная консоль MySQL
wp db cliПоиск и замена по базе данных (при миграции)
Это одна из самых мощных функций WP-CLI. При переносе сайта на новый домен нужно заменить все упоминания старого URL в базе данных, включая сериализованные данные.
# Поиск и замена URL (безопасно, с учётом сериализации)
wp search-replace 'https://old-domain.ru' 'https://new-domain.ru'
# Сухой прогон (показать, что будет заменено, без изменений)
wp search-replace 'old-domain.ru' 'new-domain.ru' --dry-run
# Замена только в определённых таблицах
wp search-replace 'old-domain.ru' 'new-domain.ru' --tables=wp_posts,wp_postmeta
# Замена с экспортом в файл (для безопасности)
wp search-replace 'old-domain.ru' 'new-domain.ru' --export=updated_db.sql⚠️ Важно: Всегда делайте бэкап БД перед search-replace! Мы разбирали настройку автоматических бэкапов в отдельной статье.
Шаг 5: Управление пользователями
# Список всех пользователей
wp user list
# Создание нового пользователя
wp user create admin admin@custom-code.ru --role=administrator --user_pass=StrongPassword123
# Изменение роли пользователя
wp user set-role 5 editor
# Сброс пароля пользователя
wp user update admin --user_pass='NewPassword123'
# Удаление пользователя (с переносом постов другому автору)
wp user delete 10 --reassign=1
# Генерация тестовых пользователей (для staging)
wp user generate --count=10 --role=subscriberШаг 6: Управление контентом
# Список всех записей
wp post list
# Список записей определённого типа
wp post list --post_type=page
# Создание новой записи
wp post create --post_type=post --post_title='Новая статья' --post_status=publish
# Удаление записи в корзину
wp post delete 123
# Принудительное удаление (без корзины)
wp post delete 123 --force
# Генерация тестовых записей (для тестирования)
wp post generate --count=50 --post_type=post
# Экспорт контента в WXR
wp export --dir=/var/backups/wordpress/Шаг 7: Кэш и оптимизация
WP-CLI отлично работает с Redis Object Cache и другими системами кэширования.
# Очистка кэша объектов (Redis/Memcached)
wp cache flush
# Очистка кэша конкретного плагина (например, WP Rocket)
wp rocket clean --confirm
# Очистка кэша transient
wp transient delete --all
# Очистка кэша Rewrite Rules
wp rewrite flush
# Регенерация миниатюр (если изменились размеры)
wp media regenerate --yesШаг 8: Отладка и диагностика
# Проверка настроек PHP
wp eval 'echo ini_get("memory_limit");'
# Выполнение произвольного PHP-кода
wp eval 'echo WP_CONTENT_DIR;'
# Информация о сайте
wp option get siteurl
wp option get home
# Список всех опций
wp option list --search='*cron*'
# Проверка cron-задач (мы настраивали их в этой статье)
wp cron event list
wp cron event run --due-now
# Тест email-уведомлений
wp eval 'wp_mail("test@example.com", "Test", "Test message");'Шаг 9: Автоматизация через bash-скрипты
Сила WP-CLI раскрывается в сочетании с bash. Вот готовый скрипт для еженедельного обслуживания сайта:
#!/bin/bash
# Файл: /usr/local/bin/wp-maintenance.sh
SITE_PATH="/var/www/wordpress"
LOG_FILE="/var/log/wp-maintenance.log"
echo "$(date): Starting maintenance..." >> $LOG_FILE
cd $SITE_PATH
# 1. Бэкап БД
wp db export /var/backups/wordpress/db_$(date +%Y-%m-%d).sql
# 2. Обновление ядра
wp core update >> $LOG_FILE 2>&1
wp core update-db >> $LOG_FILE 2>&1
# 3. Обновление плагинов
wp plugin update --all >> $LOG_FILE 2>&1
# 4. Обновление тем
wp theme update --all >> $LOG_FILE 2>&1
# 5. Очистка кэша
wp cache flush
wp transient delete --all
# 6. Оптимизация БД
wp db optimize
# 7. Удаление спама
wp comment delete $(wp comment list --status=spam --format=ids)
echo "$(date): Maintenance completed" >> $LOG_FILEДобавьте в cron для еженедельного запуска (воскресенье, 4:00):
0 4 * * 0 /usr/local/bin/wp-maintenance.shШаг 10: Алиасы для управления несколькими сайтами
Если у вас несколько WordPress-сайтов на одном сервере, используйте алиасы для быстрого переключения.
Создайте файл ~/.wp-cli/config.yml:
@site1:
path: /var/www/site1
@site2:
path: /var/www/site2
@site3:
ssh: user@remote-server:/var/www/site3Теперь можно выполнять команды на любом сайте:
# Обновить плагины на site1
wp @site1 plugin update --all
# Обновить ядро на site2
wp @site2 core update
# Обновить ВСЕ сайты одной командой
wp @site1 @site2 @site3 plugin update --allШаг 11: Полезные пакеты расширений
WP-CLI можно расширять через пакеты. Вот самые полезные:
# Список установленных пакетов
wp package list
# Установка пакета для работы с медиа
wp package install wp-cli/media-command
# Установка пакета для отладки
wp package install wp-cli/doctor-command
# Проверка здоровья сайта (аналог Site Health)
wp doctor check --allЧек-лист ежедневного использования WP-CLI
- ✅ WP-CLI установлен и работает (
wp --info) - ✅ Настроено автодополнение по Tab
- ✅ Создан bash-скрипт для обслуживания сайта
- ✅ Cron настроен на автоматическое выполнение
- ✅ Алиасы настроены для всех сайтов
- ✅ Команда
wp search-replaceпротестирована на staging - ✅ Бэкапы настроены перед каждым обновлением
Что делать, если проблемы не решаются?
Ошибка «Error: This does not seem to be a WordPress installation»
Вы не в корне сайта WordPress. Перейдите в правильную директорию или используйте флаг --path=/var/www/wordpress.
Ошибка «PHP Fatal error: Allowed memory size exhausted»
WP-CLI использует тот же memory_limit, что и PHP. Увеличьте его специально для CLI:
wp --memory-limit=512M plugin update --allПодробнее про настройку памяти читайте в нашем руководстве по memory_limit.
Команда зависает или работает очень долго
Увеличьте max_execution_time для CLI или используйте флаг --skip-plugins для отключения тяжёлых плагинов во время выполнения команды:
wp --skip-plugins=woocommerce,elementor plugin update --allWP-CLI не видит базу данных
Проверьте, правильно ли указаны данные в wp-config.php. Также убедитесь, что пользователь, под которым запущен WP-CLI, имеет доступ к файлам WordPress.
Итог
WP-CLI — это must-have инструмент для любого, кто серьёзно работает с WordPress. Он экономит часы времени, позволяет автоматизировать рутину и даёт полный контроль над сайтом через консоль. Потратив 30 минут на изучение этой статьи и установку WP-CLI, вы получите инструмент, который будет