До основного вмісту

Команди WP-CLI: пошук-заміна в БД і створення адміна

WordPress · 21.01.2025 · 4 хв читання
Ілюстрація до статті «Команди WP-CLI: пошук-заміна в БД і створення адміна»

Що таке 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.

Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці