К основному содержимому

Команды WP-CLI: поиск-замена в БД и создание админа

WordPress · 21.01.2025 · 4 мин чтения
Иллюстрация к статье «WP-CLI: управление WordPress из командной строки»

Что такое WP-CLI

WP-CLI — официальный инструмент командной строки для управления WordPress. Позволяет обновлять плагины, управлять пользователями, делать поиск-замену в базе данных и многое другое без входа в wp-admin.

Установка WP-CLI

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
mv wp-cli.phar /usr/local/bin/wp
wp --info
💡 Запускайте WP-CLI от имени пользователя сайта, а не root: sudo -u www-data wp ...

Основные команды

КомандаОписание
wp core updateОбновить WordPress
wp plugin update --allОбновить все плагины
wp theme listСписок тем
wp user listСписок пользователей
wp db export backup.sqlЭкспорт базы данных
wp cache flushОчистить кэш

Поиск-замена в базе данных

# Миграция с HTTP на HTTPS
wp search-replace 'http://example.com' 'https://example.com' --all-tables

# Смена домена
wp search-replace 'old-domain.com' 'new-domain.com' --all-tables --dry-run
⚠️ Всегда делайте --dry-run перед реальной заменой — это покажет количество строк к изменению без изменений.

Создание пользователя-администратора

wp user create admin2 admin2@example.com   --role=administrator   --user_pass=StrongPass123!

Разбор ошибок WP-CLI

WP-CLI выполняет команды от имени PHP CLI SAPI, а не веб-сервера, поэтому часть ошибок специфична именно для командной строки.

Текст ошибкиПричинаЧто делать
Error: This does not seem to be a WordPress installationКоманда запущена не в корне сайта, WP-CLI не находит wp-load.phpПерейти в директорию с wp-config.php или указать --path=/var/www/site
Error: Because "wpdb" is a global, we can not run this commandКод в wp eval выполняется раньше, чем WordPress успел полностью поднятьсяИспользовать wp eval-file и дожидаться хука init внутри файла
PHP Fatal error: Allowed memory size exhaustedЛимит memory_limit для CLI SAPI в php.ini меньше, чем нужно для тысяч замен search-replaceВременно поднять memory_limit для CLI в отдельном php.ini или через флаг --require
Error establishing a database connection при wp core update-dbВ wp-config.php неверные DB_HOST или DB_USER после переноса сайта на новый серверПроверить константы подключения и повторить команду

Если ошибка связана именно со сменой домена — см. отдельную статью про смену домена в WordPress.

Когда WP-CLI не подходит

  • Хостинг без SSH-доступа (многие shared-тарифы) — WP-CLI физически негде запускать
  • Массовые правки контента в блочном редакторе Gutenberg — неаккуратный search-replace может сломать сериализованные JSON-атрибуты внутри блоков
  • Мультисайт-сеть с десятками поддоменов — каждую команду нужно запускать с флагом --url для конкретного сайта, иначе она затронет не ту таблицу
  • Изменения, которые нужно оценить визуально — дизайн, вёрстка, расположение блоков — CLI ничего не покажет, здесь нужен браузер и staging
  • Управление правами доступа и ролями пользователей на уровне отдельных записей — WP-CLI управляет ролями целиком, а тонкая настройка capability на конкретный пост требует кода или плагина

Отдельно стоит помнить про права файловой системы: WP-CLI по умолчанию выполняется от имени того пользователя, который его запустил. Если запустить команду от root на сайте, где веб-сервер работает от www-data, новые и изменённые файлы окажутся недоступны для записи веб-серверу — плагины перестанут обновляться через интерфейс wp-admin.

Бэкап и профилирование перед изменениями

Перед любой массовой операцией через WP-CLI делайте снимок базы — откат через восстановление быстрее, чем разбор последствий вручную.

wp db export --add-drop-table backup-before-migrate.sql
wp profile stage --url=example.com
wp transient delete --all

Про сам процесс резервного копирования — в статье про бэкап WordPress. Очистку неиспользуемых таблиц и транзиентов после массовых миграций стоит проводить сразу после проверки контрольных сумм, а не откладывать на потом.

Как проверить, что команда отработала верно

  • После wp core update выполните проверку контрольных сумм ядра против официального репозитория
  • После обновления плагинов сверьте контрольные суммы каждого плагина отдельно
  • После search-replace с --dry-run сравните число затронутых строк с реальным прогоном без флага
  • После любой миграции откройте сайт в браузере и проверьте, что не осталось старого домена в ссылках
  • Проверьте код возврата команды: echo $? сразу после выполнения — 0 означает успех, любое другое число — ошибку, даже если вывод в консоли выглядел нормально
wp core verify-checksums
wp plugin verify-checksums --all
echo $?  # 0 — контрольные суммы совпали

Если команда завершилась с ошибкой обновления самого ядра WordPress — сверьтесь с общим планом миграции на VPS в статье про перенос WordPress.

Статья помогла?
← Назад в базу знаний Задать вопрос поддержке