WP-CLI

WP-CLI — это набор команд для командной строки, при помощи которых вы сможете управлять сайтом на WordPress.

Этот инструмент очень удобен, потому что:

  1. Во-первых, позволит вам быстрее выполнять некоторые задачи, на которые у вас в админке WordPress ушло бы гораздо больше времени. Например, обновление плагинов или генерация случайных постов.
  2. Во-вторых, содержит команды, которым и вовсе нет альтернатив в админке WordPress, к примеру экспорт базы данных или удаление транзитного кэша.

Я кстати абсолютно уверен, что многие из вас слышали про WP-CLI и знают, что это что-то, связанное с командной строкой, но как использовать её, не имеют представления.

Что же, вот и пришло время с этим разобраться!

А прежде, чем приступим к этому уроку, рекомендую взглянуть на мои видеокурсы.

Установка WP-CLI на Mac OS или Linux

Прежде всего неплохо бы выяснить, не установлен ли у нас случайно WP CLI, мало ли. Для этого где-нибудь в терминале введите команду wp --version.

как узнать версию утилиты WP CLI
Узнаём версию утилиты WP-CLI

Походу у меня WP-CLI уже установлена и мне ничего делать не нужно. Вам же неплохо бы прочекать, какая версия PHP используется у вас на локалке. Должна быть версия 5.3.2 минимум.

Если с версией PHP всё ок, то нам нужно запустить команду.

$ curl -L https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Или

wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

На данном этапе команды WP-CLI у меня заработали, но не все. Запускал я их кстати в терминале внутри папки WordPress-темы, с которой работал. Например версия WordPress выводилась при помощи wp core version, однако список плагинов wp plugin list выдавал ошибку Error: No such file or directory. Для того, чтобы её исправить, пришлось выполнить последовательность шагов.

  1. В качестве локального сервера я использую MAMP PRO. Первым делом я перешёл на вкладку MySQL в его интерфейсе и включил галочку «Allow network access to MySQL only from this Mac» Перезагрузил сервера.
  2. Затем там же, но уже на вкладке Ports я узнал, что MySQL у меня использует порт 8889, поэтому я перешёл в wp-config.php сайта и поменял DB_HOST с первоначального localhost на 127.0.0.1:8889. Порт тоже важно указать, если его не указывать, то ошибка будет Error: Connection refused.

Всё заработало.

Использование WP-CLI на хостинге

В этом уроке я в качестве примера буду использовать хостинг Beget. На нём и на многих хостингах утилита WP-CLI уже предустановлена и это круто. Иногда, в зависимости от хостинга или сервера, шаги могут немного отключаться, но принцип в любом случае останется тот же. Я продолжаю использовать обычный терминал на Mac OS.

Также убедитесь, что у вас стоит версия WordPress 3.7+ и PHP 5.6+

1. Подключение к серверу по SSH

Прежде всего нужно убедиться, что подключение по SSH включено в панели хостинга.

SSH в beget
Убедитесь, что галочка SSH включена рядом с адресом сервера.

Дальше можно зайти в терминал и ввести команду для подключения ssh пользователь@хост. Если всё ок, то в терминале вас попросят ввести пароль и будет выведено что-то вроде этого:

подключение к сайту на Beget по SSH
На данном этапе у нас вывелась некоторая информация о сервере Beget.

2. Переход в директорию с установкой WordPress

Если вы прямо сейчас будете пытаться использовать команды WP-CLI, например введёте wp core version, то скорее всего столкнётесь с ошибкой: Error: This does not seem to be a WordPress installation.

Это потому что вы пытались запустить команды WP CLI, находясь при этом не в директории с установленным WordPress, иначе говоря нам с вами нужно сменить текущую директорию, по отношению к которой мы запускаем команды.

Если у вас нет представления, что делать сейчас, то самым первым шагом наверное будет неплохо понять, в какой директории на сервере мы вообще находимся. Для этого можно ввести команду pwd (print working directory).

выводим текущую директорию в SSH
Обычно в Beget это всегда /home/a/логин

Теперь наша задача выбрать какой-либо сайт на аккаунте и переключить директорию на него командой cd (change directory). Пишем полный путь к установке WordPress. Пример ниже – опять-таки для хостинга beget, для других может отличаться.

cd /home/a/логин/сайт/public_html

3. Запуск WP-CLI команд

Теперь, когда мы находимся в директории с установкой WordPress, то мы можем узнать версию движка к примеру командой wp core version.

как узнать версию WordPress в WP CLI
В итоге в терминале вывелась текущая установленная версия WordPress – 6.0.1

Команды WP-CLI

Ниже я приготовил для вас несколько примеров, которые мне показались интересными и полезными. Однако, я не перечислил даже и половины существующих команд.

Полный список команд и описание их параметров вы можете найти в официальной документации, однако есть и небольшой лайфхак, вы можете ввести лишь первую часть команды, например wp core и в терминале выведется полный список её команд и параметрво.

Примеры

В WP-CLI довольно большой набор разных команд и одного урока для их описания будет явно недостаточно, однако есть некоторые, которые мне показались интересными и про них я вам и расскажу.

Обновление WordPress и плагинов через WP-CLI

У меня есть несколько знакомых, у которых есть клиенты, которые платят им за поддержку сайта, причём на сайте ничего особо делать не приходится – нужно лишь своевременно обновлять плагины и темы. И вроде бы у кого-то было чуть больше 20-и подобных клиентов.

Конечно же заходить в каждый сайт каждый раз и обновлять все плагины и ядро ручками не очень удобно. Правда, сейчас для этих целей уже существует автообновление, ну а раньше можно было делать при помощи всего двух команд в WP CLI.

  • wp core update – обновляем ядро.
  • wp plugin update --all – обновляем все плагины.

Результат выполнения обоих команд на скриншоте:

обновление плагинов и ядра WordPress при помощи WP CLI
Версия WordPress обновлена не была, потому что и так установлена самая свежая, а вот один из плагинов был обновлён.

Установка и активация плагинов

При помщи WP-CLI очень легко устанавливать, активировать и деактивировать плагины.

  • wp plugin install hello– установка,
  • wp plugin install hello --activate – установка и активация,
  • wp plugin activate hello – активация,
  • wp plugin deactivate hello – деактивация,
  • wp plugin delete hello – удаление.

Ну и конечно же можно вывести список всех плагинов командой wp plugin list.

выводим список плагинов при помощи WP CLI

Смена пароля пользователя

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

$ wp user update USERNAME --user_pass=PASSWORD

Создание нового пользователя

wp user create mishatest no-reply@misha.agency --role=author

Генерация рандомного контента

А это пожалуй один из самых интересных моментов, ведь WP-CLI позволяет нам при помощи всего одной команды заполнить сайт случайно сгенерированным контентом! Без дополнительных плагинов и без запар.

Давайте для начала взглянем на команду generate и на несколько примеров:

  • wp post generate --count=30 – создаст 30 записей,
  • wp user generate --count=5 --role=author – создаст 5 пользователей с ролью автора.
  • wp term generate --count=15 – создаст 15 терминов (рубрик).
  • wp comment generate --count=5 --post_id=123 – сгенерирует 5 комментариев для поста с ID=123.

А как вам такой пример – сгенерируем 10 Страниц, а для их содержимое будем использовать рыбный текст Lorem Ipsum.

$ curl http://loripsum.net/api/5 | wp post generate --post_content --count=10 --post_type=page

Экспорт базы данных

$ wp db export wordpress.sql

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

Также утилите WP-CLI позволяет производить поиск и замену определённых строк в базе данных. Например это может быть удобно при смене домена или переезде на HTTPS.

Не забывайте быть осторожными с этой командой плюс лишняя резервная копия базы данных не повредит.

wp search-replace 'https://misha.blog' 'https://misha.agency'

Ну кстати говоря, не забывайте протестировать свою команду с ключом --dry-run – в этом случае утилита также произведёт поиск по базе данных и выведет результаты, но не будет производить замену.

wp search-replace 'https://misha.blog' 'https://misha.agency' --dry-run

Получение или обновление опций в базе данных

К примеру можем получить админский email:

$ wp option get admin_email

И изменить его на другой:

$ wp option update admin_email "no-reply@misha.agency"

Хотя по сути то же самое можно сделать при помощи интерактивной консоли и функций get_option() и update_option().

Использование интерактивной консоли

Вот это вообще классная тема, супер-полезная при отладке сайта.

  1. Запускаете команду wp shell
  2. После этого вы можете использовать все функции и классы окружения WordPress, чтобы вывести информацию в консоли, например get_the_title( 27789 ), чтобы вывести заголовок поста с ID27789.

Пример:

$ wp shell
wp> get_the_title( 27789 );
=> string(17) "О команде"

Для выхода достаточно напечатать exit; или нажать комбинацию Ctrl + C.

Очистка транзитного кэша

Про транзитный кэш мы подробно говорили в отдельном уроке. Так вот, оказывается его можно легко очистить всего лишь одной командой!

wp transient delete --all

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал