WP-CLI — это набор команд для командной строки, при помощи которых вы сможете управлять сайтом на WordPress.
Этот инструмент очень удобен, потому что:
Я кстати абсолютно уверен, что многие из вас слышали про WP-CLI и знают, что это что-то, связанное с командной строкой, но как использовать её, не имеют представления.
Что же, вот и пришло время с этим разобраться!
А прежде, чем приступим к этому уроку, рекомендую взглянуть на мои видеокурсы.
Прежде всего неплохо бы выяснить, не установлен ли у нас случайно WP CLI, мало ли. Для этого где-нибудь в терминале введите команду wp --version
.
Походу у меня 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. Для того, чтобы её исправить, пришлось выполнить последовательность шагов.
8889
, поэтому я перешёл в wp-config.php
сайта и поменял DB_HOST
с первоначального localhost
на 127.0.0.1:8889
. Порт тоже важно указать, если его не указывать, то ошибка будет Error: Connection refused.Всё заработало.
В этом уроке я в качестве примера буду использовать хостинг Beget. На нём и на многих хостингах утилита WP-CLI уже предустановлена и это круто. Иногда, в зависимости от хостинга или сервера, шаги могут немного отключаться, но принцип в любом случае останется тот же. Я продолжаю использовать обычный терминал на Mac OS.
Также убедитесь, что у вас стоит версия WordPress 3.7+ и PHP 5.6+
Прежде всего нужно убедиться, что подключение по SSH включено в панели хостинга.
Дальше можно зайти в терминал и ввести команду для подключения ssh пользователь@хост
. Если всё ок, то в терминале вас попросят ввести пароль и будет выведено что-то вроде этого:
Если вы прямо сейчас будете пытаться использовать команды WP-CLI, например введёте wp core version
, то скорее всего столкнётесь с ошибкой: Error: This does not seem to be a WordPress installation.
Это потому что вы пытались запустить команды WP CLI, находясь при этом не в директории с установленным WordPress, иначе говоря нам с вами нужно сменить текущую директорию, по отношению к которой мы запускаем команды.
Если у вас нет представления, что делать сейчас, то самым первым шагом наверное будет неплохо понять, в какой директории на сервере мы вообще находимся. Для этого можно ввести команду pwd
(print working directory).
Теперь наша задача выбрать какой-либо сайт на аккаунте и переключить директорию на него командой cd
(change directory). Пишем полный путь к установке WordPress. Пример ниже – опять-таки для хостинга beget, для других может отличаться.
cd /home/a/логин/сайт/public_html
Теперь, когда мы находимся в директории с установкой WordPress, то мы можем узнать версию движка к примеру командой wp core version
.
Ниже я приготовил для вас несколько примеров, которые мне показались интересными и полезными. Однако, я не перечислил даже и половины существующих команд.
Полный список команд и описание их параметров вы можете найти в официальной документации, однако есть и небольшой лайфхак, вы можете ввести лишь первую часть команды, например wp core
и в терминале выведется полный список её команд и параметрво.
В WP-CLI довольно большой набор разных команд и одного урока для их описания будет явно недостаточно, однако есть некоторые, которые мне показались интересными и про них я вам и расскажу.
У меня есть несколько знакомых, у которых есть клиенты, которые платят им за поддержку сайта, причём на сайте ничего особо делать не приходится – нужно лишь своевременно обновлять плагины и темы. И вроде бы у кого-то было чуть больше 20-и подобных клиентов.
Конечно же заходить в каждый сайт каждый раз и обновлять все плагины и ядро ручками не очень удобно. Правда, сейчас для этих целей уже существует автообновление, ну а раньше можно было делать при помощи всего двух команд в WP CLI.
wp core update
– обновляем ядро.wp plugin update --all
– обновляем все плагины.Результат выполнения обоих команд на скриншоте:
При помщи 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
.
У меня уже был пост про 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().
Вот это вообще классная тема, супер-полезная при отладке сайта.
wp shell
get_the_title( 27789 )
, чтобы вывести заголовок поста с ID27789.Пример:
$ wp shell wp> get_the_title( 27789 ); => string(17) "О команде"
Для выхода достаточно напечатать exit;
или нажать комбинацию Ctrl + C
.
Про транзитный кэш мы подробно говорили в отдельном уроке. Так вот, оказывается его можно легко очистить всего лишь одной командой!
wp transient delete --all
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.