Логотип

Команды WP-CLI: полное справочное руководство (2026). Часть 2

Команды 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

 

Запустите эту команду после внесения изменений, которые должны сразу же отобразиться в интерфейсе.

 

Читать  Как защитить паролем администратора WordPress (каталог WP-admin)

Сбросить правила перезаписи

Перегенерировать правила перезаписи 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 NetworkadminStrongPassword123 и 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-адрес нового поддомена (например, shopblogclient1). Замените "Новый сайт" на отображаемое название сайта, а адрес электронной почты — на реальный адрес.

 

Удалить дочерний сайт

Удалить дочерний сайт из сети:

# Перевести в статус удаленных
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.

 

Начало:

  1. Команды WP-CLI: полное справочное руководство (2026). Часть 1

 

Продолжение следует…

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

19 + шестнадцать =

Это может быть вам интересно


Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала