WP-CLI в 2026 году: установка и главные команды для WordPress

WP-CLI в 2026 году: установка и главные команды для WordPress

WP-CLI это официальная утилита командной строки для WordPress. Через неё из терминала управляют пользователями, плагинами, темами, записями, базой и кэшем. На сервере с SSH это часто быстрее админки, а команды легко собрать в скрипт, повесить на cron или запустить в CI. Последняя стабильная версия сейчас 2.12.0. Ниже самые ходовые команды, подробности по каждой есть в официальном справочнике.

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

По инструкции проекта нужен PHP 7.2.24 или новее, других требований сверх самого WordPress нет. Рекомендуемый способ: скачать phar-архив, проверить, сделать исполняемым и положить в PATH.

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
wp --info

Подлинность файла можно проверить по GPG-подписи, проект советует делать это перед первым запуском:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar.asc
curl -L https://raw.githubusercontent.com/wp-cli/builds/gh-pages/wp-cli.pgp | gpg --import
gpg --verify wp-cli.phar.asc wp-cli.phar

Обновляется WP-CLI сам: wp cli update, а если файл принадлежит root, то sudo wp cli update.

Команды запускают из каталога сайта, где лежит wp-config.php, или с параметром --path=/path/to/site. От root WP-CLI работать отказывается без --allow-root, и правильнее запускать его от владельца файлов сайта, например sudo -u www-data wp ..., чтобы не плодить файлы с чужими правами.

Пользователи и роли

wp user list
wp user create ivan ivan@example.com --role=author
wp user set-role ivan editor
wp user delete ivan --reassign=1

У wp user delete есть важная деталь. Без --reassign команда удалит пользователя вместе с его записями, а перед этим только спросит подтверждение. Чтобы сохранить контент, передайте ID пользователя, которому его отдать. Ключ --yes отвечает «да» на вопросы, его ставят в скриптах.

Записи, страницы, рубрики

wp post list --post_type=page
wp post create --post_type=page --post_title='О компании' --post_status=publish
wp post update 123 --post_title='Новое название'
wp post delete 123
wp post delete 123 --force
wp term create category 'Новости'
wp term delete category 15

Обычный wp post delete отправляет запись в корзину, с --force удаляет сразу.

Плагины и темы

wp plugin list
wp plugin install query-monitor --activate
wp plugin deactivate query-monitor
wp plugin delete query-monitor
wp plugin update --all --dry-run
wp plugin update --all
wp theme install twentytwentyfive --activate
wp theme update --all

У wp plugin update полезны ключи --dry-run (показать, что обновится), --minor и --patch (только минорные или патч-версии) и --exclude для плагинов, которые трогать нельзя. Перед массовым обновлением на боевом сайте сделайте дамп базы.

Бэкап базы и перенос сайта

wp db export backup.sql
wp db export - | gzip > backup-$(date +%F).sql.gz
wp db import backup.sql

wp db export делает обычный дамп MySQL или MariaDB, со знаком минус вместо имени файла пишет его в стандартный вывод. Файлы wp-content (медиа, плагины, темы) копируются отдельно: rsync, tar или снапшот сервера.

При переезде на новый домен адреса в базе меняют через wp search-replace. Команда правильно обрабатывает сериализованные данные, чего не умеет простой sed по дампу. Сначала прогон без изменений:

wp search-replace 'https://old.example.com' 'https://example.com' --dry-run
wp search-replace 'https://old.example.com' 'https://example.com' --all-tables-with-prefix

Обслуживание: оптимизация, кэш, проверка ядра

wp db optimize
wp cache flush
wp transient delete --expired
wp core verify-checksums
wp plugin verify-checksums --all

wp db optimize запускает mysqlcheck с оптимизацией таблиц. wp cache flush сбрасывает объектный кэш, это особенно заметно с Redis или Memcached после смены настроек или деплоя. wp core verify-checksums сверяет файлы ядра с эталонными с wordpress.org и быстро показывает подменённые файлы после взлома, для плагинов из каталога есть то же самое.

Настройки в wp_options

wp option get siteurl
wp option update blogname 'Мой сайт'
wp option add my_custom_option 'значение'
wp option delete my_custom_option

Команды wp option работают с записями таблицы wp_options. Метаполя записей, в том числе значения полей ACF, лежат не там: для них есть wp post meta.

Автоматизация через cron

Типичный сценарий: ночной дамп базы скриптом по расписанию.

#!/usr/bin/env bash
set -euo pipefail
cd /var/www/example.com
wp db export - | gzip > "/backup/db-$(date +%F).sql.gz"
find /backup -name 'db-*.sql.gz' -mtime +14 -delete
# дальше rsync или rclone на удалённое хранилище

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

Практические советы

  • Справка всегда под рукой: wp help, wp help post create.
  • Для скриптов удобны --format=json, --format=ids и --field=ID: wp post list --post_status=trash --format=ids сразу отдаёт список ID.
  • --skip-plugins и --skip-themes спасают, когда сайт лежит из-за сломанного плагина или темы.
  • WP-CLI умеет работать с удалённым сервером: wp --ssh=user@host/var/www/example.com plugin list.
  • На обычном хостинге без глобального wp можно запускать php wp-cli.phar.
  • Перед опасными командами (импорт базы, массовое удаление, search-replace) делайте дамп.

В итоге WP-CLI закрывает почти всю рутину вокруг WordPress: установка, обновления, пользователи, контент, бэкапы и перенос. Достаточно один раз поставить phar, запускать его от владельца сайта и не забывать про дамп перед рискованными командами.

Источники и ссылки


Комментарии загружаются…