WP-CLI: Автоматизация WordPress через Консоль — Полное Руководство

Если вы до сих пор обновляете плагины через админку 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 --all

WP-CLI не видит базу данных

Проверьте, правильно ли указаны данные в wp-config.php. Также убедитесь, что пользователь, под которым запущен WP-CLI, имеет доступ к файлам WordPress.

Итог

WP-CLI — это must-have инструмент для любого, кто серьёзно работает с WordPress. Он экономит часы времени, позволяет автоматизировать рутину и даёт полный контроль над сайтом через консоль. Потратив 30 минут на изучение этой статьи и установку WP-CLI, вы получите инструмент, который будет