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