Команды WP-CLI: полное справочное руководство (2026). Часть 2
Работа с базой данных WordPress
База данных — это сердце любого сайта на WordPress. WP-CLI позволяет легко выполнять запросы, экспортировать, импортировать и восстанавливать базу данных без необходимости открывать phpMyAdmin.
Экспорт базы данных
Сохраните полную резервную копию базы данных WordPress в файл .sql:
wp db export backup.sql
Всегда выполняйте эту команду перед внесением серьезных изменений. Она сохраняет всю базу данных в файл .sql, который можно восстановить в любой момент.
Импортировать базу данных
Восстановить базу данных из файла резервной копии или перенести сайт с другого сервера:
wp db import backup.sql
Выполнить пользовательский SQL-запрос
Выполнить любую SQL-команду непосредственно в базе данных WordPress:
wp db query "SELECT * FROM wp_users;"
Вы можете выполнить любую допустимую команду SQL напрямую через WP-CLI.
Поиск и замена в базе данных
Чтобы найти и заменить строку во всей базе данных, например при переходе на новый домен, выполните следующую команду:
wp search-replace 'http://old-domain.ru' 'https://new-domain.ru'
Это одна из самых мощных команд в WP-CLI. Она корректно обрабатывает сериализованные данные, чего не может сделать обычная команда SQL для поиска и замены. Всегда сначала просматривайте изменения с помощью --dry-run:
wp search-replace 'http://old-domain.ru' 'https://new-domain.ru' --dry-run
Для замены во всех таблицах базы данных, включая пользовательские таблицы плагинов:
wp search-replace 'oldsite.ru' 'newsite.ru' --all-tables
Оптимизация и восстановление базы данных
wp db optimize # Устраняет лишние элементы и повышает производительность базы данных wp db repair # Восстанавливает поврежденные таблицы базы данных после сбоя wp db check # Выполняет проверку целостности без внесения изменений
Периодически запускайте optimize для оптимизации и ускорения работы базы данных. Запускайте check после сбоя сервера для поиска поврежденных данных.
Проверьте размер базы данных
Посмотрите, сколько места на диске занимает ваша база данных:
wp db size --human-readable # Узнайте размер каждой отдельной таблицы wp db size --tables
Сброс настроек всей базы данных
Чтобы удалить все данные и все таблицы из базы данных WordPress, выполните следующую команду:
wp db reset
Предупреждение: при этом безвозвратно удаляются все данные (публикации, страницы, пользователи, настройки и весь контент). Отменить действие невозможно. Перед выполнением этой команды всегда сначала экспортируйте базу данных с помощью
wp db export.
Команды для кэширования и повышения производительности
Очистка кэша объектов
Очистка всех кэшированных данных, хранящихся в кэше объектов WordPress (или в плагине кэширования, таком как Redis или Memcached):
wp cache flush
Запустите эту команду после внесения изменений, которые должны сразу же отобразиться в интерфейсе.
Сбросить правила перезаписи
Перегенерировать правила перезаписи URL в WordPress после изменения настроек постоянных ссылок или регистрации новых типов записей:
wp rewrite flush
Запустите эту команду после изменения структуры постоянных ссылок или регистрации новых типов записей.
Удалить временные файлы
Удалите временные кэшированные данные, хранящиеся в базе данных.
# Удалить все временные файлы wp transient delete --all # Удаляйте только устаревшие временные файлы wp transient delete --expired
Используйте --expired для регулярной очистки. Используйте --all только в том случае, если вам нужна полная очистка кэша.
Перегенерировать миниатюры изображений
wp media regenerate
Запустите эту команду после смены темы или добавления новых размеров изображений, чтобы перегенерировать все существующие изображения.
Управление WordPress Multisite с помощью WP-CLI
WordPress Multisite позволяет управлять сетью сайтов с помощью одной установки WordPress. WP-CLI отлично справляется с задачами, связанными с несколькими сайтами, и для большинства операций достаточно небольшого дополнения к стандартным командам.
Преобразование одного сайта в сеть мультисайтов
Чтобы преобразовать существующую установку WordPress в сеть мультисайтов, выполните следующие действия:
wp core multisite-convert
Пользователи Apache: после выполнения этой команды вам также нужно обновить файл
.htaccessс помощью правил перезаписи для мультисайтовых конфигураций. WP-CLI добавляет константы вwp-config.php, но не обновляет.htaccessавтоматически. Ознакомьтесь с документацией по мультисайтовым конфигурациям WordPress, чтобы узнать правильные правила перезаписи.
Установите новую сеть мультисайтов
Создайте новую установку мультисайта WordPress с нуля с помощью команды:
wp core multisite-install \ --url="https://your-network-domain.ru" \ --title="My Network" \ --admin_user=admin \ --admin_password=StrongPassword123 \ --admin_email=admin@your-domain.ru
Замените https://your-network-domain.com на свой реальный домен. Не используйте — это реальный сайт.example.ru Замените , My Network, admin, StrongPassword123 и admin@your-domain.com на свои значения.
Список всех сайтов в сети
Просмотр всех сайтов в вашей многосайтовой сети:
wp site list
# Подробнее
wp site list --fields=blog_id,url,registered,last_updated
Создайте новый дочерний сайт
Добавьте новый сайт в свою мультисайтовую сеть:
wp site create --slug=news --title="Новый сайт" --email=news@your-domain.ru
Замените news на URL-адрес нового поддомена (например, shop, blog, client1). Замените "Новый сайт" на отображаемое название сайта, а адрес электронной почты — на реальный адрес.
Удалить дочерний сайт
Удалить дочерний сайт из сети:
# Перевести в статус удаленных
wp site delete 3
# Удаление без запроса на подтверждение
wp site delete 3 --yes
Замените 3 на blog_id сайта, который вы хотите удалить. Чтобы узнать правильный идентификатор, сначала выполните wp site list.
Активируйте плагин во всей сети
Активируйте плагин на всех сайтах сети одновременно:
wp plugin activate woocommerce --network
Флаг --network — ключевое отличие мультисайтовой конфигурации. Без него команда влияет только на текущий сайт.
Нацеливание на конкретный подсеть
Используйте --url для выполнения любой команды на конкретном сайте в сети:
wp plugin list --url=https://your-network-domain.ru/news wp plugin update --all --url=https://your-network-domain.ru/marketing
Замените https://your-network-domain.ru/news на полный URL-адрес поддомена, на который вы хотите настроить таргетинг. Правильный URL-адрес можно получить в wp site list.
Массовые операции на всех сетевых сайтах
# Обновите плагины на всех сайтах в сети
for site in $(wp site list --field=url); do
echo "Обновляем $site"
wp plugin update --all --url=$site
done
# Очистите кэш на всех сайтах
for site in $(wp site list --field=url); do
wp cache flush --url=$site
done
# Экспорт базы данных для каждого сайта
for site in $(wp site list --field=url); do
site_slug=$(echo $site | cut -d'/' -f4)
wp db export "${site_slug}-backup.sql" --url=$site
done
# Перегенерировать миниатюры для всей сетиfor site in $(wp site list --field=url); do wp media regenerate --yes --url=$site done
Управление пользователями в масштабах всей сети
# Список всех суперадминистраторов
wp list super-admin
# Предоставление прав суперпользователя
wp super-admin add username
# Добавьте роль пользователя на каждый сайт в сети
wp site list --field=url | xargs -I {} wp user set-role manager --url={}Рабочий процесс настройки нового сайта
При подключении нового клиента к вашей мультисайтовой сети этот скрипт выполняет полную настройку за считаные секунды:
# Создайте сайт wp site create --slug=newclient --title="Новый клиентский сайт" \ --email=admin@newclient.ru # Активируйте необходимые плагины на новом сайте wp plugin activate contact-form-7 yoast-seo \ --url=newclient.yournetwork.ru # Создание страниц по умолчанию wp post create --post_type=page --post_title="Главная" \ --post_status=publish --url=newclient.yournetwork.ru wp post create --post_type=page --post_title="О нас" \ --post_status=publish --url=newclient.yournetwork.ru wp post create --post_type=page --post_title="Контакты" \ --post_status=publish --url=newclient.yournetwork.ru # Создайте учетную запись администратора для клиента wp user create clientadmin client@email.com \ --role=administrator --url=newclient.yournetwork.ru
Миграция доменов для мультисайтовой инфраструктуры
Чтобы заменить старый сетевой домен на новый во всех сайтах сети, выполните следующие действия:
# Замените старый домен на всех сайтах for site in $(wp site list --field=url); do wp search-replace 'oldnetwork.com' 'newnetwork.com' --url=$site done
Автоматизация обслуживания WordPress
WP-CLI по-настоящему хорош в автоматизации. В сочетании с командами оболочки и заданиями cron он позволяет полностью автоматизировать рутинное обслуживание.
Скрипт для еженедельного обслуживания
Создайте файл с именем weekly-wordpress-maintenance.sh:
#!/bin/bash # weekly-wordpress-maintenance.sh # Перейдите в каталог WordPress cd /var/www/html/wordpress # Сначала создайте резервную копию базы данных wp db export backups/backup-$(дата +%Y%m%d-%H%M%S).sql # Обновите все
wp plugin update --all wp theme update --all wp core update wp core update-db
# Очистка
wp cache flush wp db optimize wp transient delete --expired wp rewrite flush
# Отчет о завершении echo "Обслуживание завершено в $(дата)"
Сделайте его исполняемым:
chmod +x weekly-wordpress-maintenance.sh
Перед составлением расписания протестируйте его вручную:
./weekly-wordpress-maintenance.sh
Запланируйте это с помощью Cron
Откройте редактор crontab:
crontab -e
Добавьте эту строку, чтобы она запускалась каждое воскресенье в 3 часа ночи:
0 3 * * 0 /path/to/weekly-wordpress-maintenance.sh > /var/log/wp-maintenance.log 2>и1
Часть > /var/log/wp-maintenance.log 2>&1 сохраняет все выходные данные в лог-файл, чтобы вы могли просмотреть их позже.
Автоматическое ежедневное резервное копирование базы данных
#!/bin/bash # daily-backup.sh DATE=$(date +%Y-%m-%d) BACKUP_DIR="/var/backups/wordpress" SITE_DIR="/var/www/html" mkdir -p "$BACKUP_DIR" cd "$SITE_DIR" wp db export "$BACKUP_DIR/db-backup-$DATE.sql" --allow-root echo "Резервное копирование завершено: db-backup-$DATE.sql"
Управление несколькими сайтами с помощью одного скрипта
#!/bin/bash
# update-all-wordpress-sites.sh
SITES=(
"/var/www/site1.com"
"/var/www/site2.com"
"/var/www/site3.com"
)
for site in "${SITES[@]}"; do
echo "Обновление $site..."
# Сначала сделайте резервную копию
wp db export "$site/backup-$(date +%Y%m%d).sql" --path="$site"
# Обновлениеwp plugin update --all --path="$site" wp theme update --all --path="$site" wp core update --path="$site"
# Очистка
wp cache flush --path="$site" echo "Completed $site" echo "---" done
echo "Все сайты обновлены."
Автоматическая настройка Fresh WordPress
Если вы часто создаете новые сайты, этот скрипт сэкономит вам массу времени:
#!/bin/bash # setup-new-site.sh
wp core download wp config create \ --dbname=mydb \ --dbuser=myuser \ --dbpass=mypassword \ --dbhost=localhost wp core install \ --url="https://example.com" \ --title="New Site" \ --admin_user=admin \ --admin_password=admin123 \ --admin_email=admin@example.com \ --skip-email # Удалите плагины по умолчанию wp plugin delete hello-dolly wp plugin delete akismet # Установите и активируйте основные
wp plugin install wordfence contact-form-7 yoast-seo --activate wp theme install astra --activate
echo "Настройка сайта завершена."
WP-CLI в современных рабочих процессах разработки
WP-CLI естественным образом интегрируется с инструментами, которые уже используют современные разработчики. Он устраняет разрыв между WordPress и современными практиками DevOps.
WP-CLI с Docker
Docker — одна из лучших сред для безопасной практики работы с WP-CLI. Вы можете создать одноразовый сайт на WordPress, выполнить любую команду и удалить все, не затрагивая работающий сайт.
В docker-compose.yml ниже используются тома tmpfs (только для оперативной памяти). В результате все данные автоматически удаляются при остановке контейнеров. Очистка не требуется!
# docker-compose.yml
name: wp-cli-lab
services:
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppass
tmpfs:
- /var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-prootpass"]
interval: 5s
timeout: 5s
retries: 10
networks: [wpnet]
wordpress:
image: wordpress:latest
depends_on:
db:
condition: service_healthy
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppass
tmpfs:
- /var/www/html
ports:
- "8080:80"
networks: [wpnet]
wpcli:
image: wordpress:cli
depends_on:
- wordpress
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppass
volumes_from:
- wordpress
user: "33:33"
working_dir: /var/www/html
entrypoint: ["tail", "-f", "/dev/null"]
networks: [wpnet]
networks:
wpnet:
driver: bridge
Запустите среду:
docker compose up -d
Выполните команды WP-CLI:
docker compose exec wpcli wp --allow-root plugin list docker compose exec wpcli wp --allow-root core install \ --url="http://localhost:8080" \ --title="WP-CLI Lab" \ --admin_user=admin \ --admin_password=admin123 \ --admin_email=admin@mysite.com \ --skip-email
Когда закончите, все разберите:
docker compose down
Все контейнеры останавливаются, все данные удаляются. Каждый раз вы начинаете с чистого листа.
WP-CLI с GitHub Actions (CI/CD)
Вы можете интегрировать WP-CLI непосредственно в конвейер GitHub Actions. В этом примере настраивается WordPress, устанавливается ваш плагин и при каждом обновлении запускаются проверки:
name: WordPress Tests
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
- name: Install WP-CLI
run: |
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
- name: Setup WordPress
run: |
wp core download --allow-root
wp config create --dbname=test --dbuser=root \
--dbpass=root --allow-root
wp core install --url=localhost --title=Test \
--admin_user=admin --admin_password=admin \
--admin_email=test@test.com --allow-root
- name: Run Tests
run: |
wp plugin activate my-plugin --allow-root
wp plugin list --allow-root
wp core verify-checksums --allow-root
Источник: https://github.com/shivammathur/setup-php
Скрипт для развертывания
#!/bin/bash # deploy.sh # Получаем последнюю версию кода git pull origin main # Обновление зависимостей Composer composer install --no-dev # Обновите ядро WordPress wp core update # Примените обновления базы данных wp core update-db # Обновление плагинов
wp plugin update --all
# Очистите все кэши wp cache flush wp transient delete --all wp rewrite flush echo "Развертывание завершено в $(дата)"
Синхронизировать производственную базу данных с локальной
#!/bin/bash # sync-from-production.sh # Экспорт рабочей базы данных через SSH ssh production "wp db export -" > production-db.sql # Импорт в локальную среду wp db import production-db.sql # Замените рабочие URL на локальные wp search-replace 'https://production.com' 'http://localhost:8000' # Обновите пути к файлам, если они изменились wp search-replace '/var/www/production' '/Users/dev/local-wp' # Очистка кэша wp cache flush echo "Синхронизация завершена"
WordPress Studio
WordPress Studio — это бесплатное настольное приложение для локальной разработки на WordPress. Оно поставляется с предварительно настроенным и готовым к использованию WP-CLI, что идеально подходит для тех, кто хочет полностью отказаться от командной строки при локальной настройке. Приложение можно скачать по ссылке: https://developer.wordpress.com/studio/.
Настройка WP-CLI с помощью wp-cli.yml
wp-cli.yml это конфигурационный файл, который находится в корневом каталоге вашего проекта и позволяет вам определять значения по умолчанию и псевдонимы среды. Вместо ввода --path, --url и --allow-root для каждой команды вы задаете их один раз в этом файле, и WP-CLI распознает их автоматически.
Базовая настройка wp-cli.yml
Создайте файл с именем wp-cli.yml в корневом каталоге WordPress:
path: /var/www/html url: https://yoursite.com user: admin
Теперь wp plugin list автоматически указывает на этот путь и URL без каких-либо флагов.
Псевдонимы среды
Наиболее мощной функцией wp-cli.yml являются псевдонимы среды. Вы определяете @local, @staging и @production один раз, затем запускаете любую команду в любой среде из вашего локального терминала. Сеанс SSH не требуется.
@local: path: /Users/yourname/sites/mysite @staging: ssh: user@staging.yoursite.com path: /var/www/staging @production: ssh: user@yoursite.com path: /var/www/html
Чтобы использовать псевдоним, добавьте к команде префикс @environment:
# Обновление плагинов на промежуточной версии wp @staging plugin update --all # Экспортируйте производственную базу данных на свой локальный компьютер wp @production db export - > production-backup.sql # Выполните поиск и замену в промежуточной среде после переноса рабочей базы данных wp @staging search-replace 'yoursite.com' 'staging.yoursite.com' # Проверьте версию ядра во всех трех средах одновременно
wp @local core version && wp @staging core version && wp @production core version
Файл wp-cli.yml должен быть зафиксирован в системе контроля версий. Если он содержит конфиденциальные учетные данные SSH, используйте wp-cli.local.yml вместо него. WP-CLI считывает оба файла, и .local.yml игнорируется Git, если вы добавите его в .gitignore.
Начало:
Продолжение следует…
Редактор: AndreyEx