WP-CLI является инструментов командной строки, который широко используется для решения задач администраторами и разработчиками. Он предоставляет набор команд, которые вы можете использовать для управления сайтом WordPress без подключения к его панели управления и без необходимости перемещаться по его страницам. В данном руководстве мы посмотрим, что представляет из себя использование WP-CLI v2 для управления WordPress из консоли.
Предварительные требования
В данном мануале мы будем работать на сервере с установленной операционной системой Ubuntu 20.04. Для вашей дальнейшей работы на сервере необходимо будет использовать учётную запись, которая имеет привилегии sudo
, и при этом, не является root-ом. Также, на вашем сервере должен быть установлен и настроен брандмауэр UFW.
Предварительно, на сервере необходимо установить стек LAMP. То есть, на операционной системе Ubuntu 20.04, несомненно относящейся к Linux-системам, должны быть установлены веб-сервер Apache, система управления базами данных MySQL, а также, компонента скриптового языка PHP.
Ещё вам нужно иметь собственное зарегистрированное доменное имя. В данном руководстве мы будем использовать домен my-domain.host
. Плюс ко всему, А-запись вашего домена должна указывать на IP-адрес вашего VPS.
Так как WordPress работает с контентом пользователей и хранит данные о них, важно обеспечить соответствующий уровень безопасности. Поэтому необходимо обезопасить подключение к вашему сайту при помощи доверенного сертификата, предоставленного Let’s Encrypt. Другими словами, доступ к вашему домену должен осуществляться по защищённому протоколу HTTPS.
Подготовительные работы для установки WordPress
Теперь, когда предварительные условия соблюдены, начнём с установки и настройки WordPress.
Для начала необходимо создать в MySQL базу данных и пользователя, которыми будет пользоваться WordPress.
Первым шагом, подключитесь к командной строке MySQL при помощи MySQL-пользователя root (не пользователя root вашего сервера):
$ sudo mysql -u root -p
Для получения доступа к командной строке необходимо будет ввести пароль учётной записи root, который вы создавали при установке пакета MySQL.
Подключившись, создайте отдельную базу данных для WordPress. В данном руководстве наша база будет называться wpdb
:
mysql> CREATE DATABASE wpdb DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Далее, необходимо создать учётную запись MySQL, которая будет в дальнейшем использоваться для работы с только что созданной базой данных:
mysql> CREATE USER 'wpuser'@'%' IDENTIFIED WITH mysql_native_password BY 'P@$$w0rd';
Здесь, wpuser
– это имя создаваемой учётной записи, а P@$$w0rd
– её пароль.
Теперь предоставьте созданному пользователю полные права на базу данных wpdb
:
mysql> GRANT ALL ON wpdb.* TO 'wpuser'@'%';
Чтобы внесённые в MySQL изменения вступили в силу, необходимо обновить таблицу привилегий учётных записей MySQL:
mysql> FLUSH PRIVILEGES;
Для выхода из командной строки MySQL, используйте команду:
mysql> EXIT;
Далее, нужно будет установить некоторые дополнительные расширения PHP. В дальнейшем при своей работе их будет использовать WordPress:
$ sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
После завершения установки перезапустите Apache:
$ sudo systemctl restart apache2
Теперь, для корректной работы веб-сервера Apache, необходимо дать разрешение на использование файла .htaccess
. Чтобы произвести такую настройку, нужно отредактировать конфигурационный файл Apache. Он расположен в каталоге /etc/apache2/sites-available/
, имеет расширение .conf
и называется по имени вашего домена (в нашем случае это – my-domain.host.conf
):
$ cd /etc/apache2/sites-available
$ sudo nano my-domain.host.conf
В этот файл вставьте следующие строки, заменив выделенный текст на соответствующий вашему домену:
<Directory /var/www/my-domain.host/>
AllowOverride All
</Directory>
Закройте файл сохранив изменения.
Далее, для возможности использования постоянных ссылок в WordPress, необходимо активировать mod_rewrite
. Делается это при помощи скрипта a2enmod
:
$ sudo a2enmod rewrite
Теперь, запустите проверку синтаксиса Apache:
$ sudo apache2ctl configtest
Если вывод теста выглядит как Syntax OK
перезапустите веб-сервер:
$ sudo systemctl restart apache2
Установка WordPress
Теперь пришло время загрузить и настроить WordPress. Перейдите во временную директорию и запустите загрузку дистрибутива последней версии WordPress:
$ cd /tmp
$ curl -O https://wordpress.org/latest.tar.gz
Распакуйте скачанный архив:
$ tar xzvf latest.tar.gz
В распакованном каталоге создайте пустой файл .htaccess
:
$ touch /tmp/wordpress/.htaccess
Там же создайте каталог upgrade
:
$ mkdir /tmp/wordpress/wp-content/upgrade
И теперь, скопируйте содержимое каталога /tmp/wordpress
в корневую директорию вашего сайта (в нашем случае это – my-domain.conf
):
$ sudo cp -a /tmp/wordpress/. /var/www/my-domain.host
Далее, необходимо установить соответствующие права на каталог, в котором содержатся файлы нашего сайта. Обработку файлов WordPress на нашем сервере осуществляет веб-сервер Apache. Для этого Apache использует учётную запись и группу www-data
. При этом, нам нужно предоставить необходимые права пользователю, под которым мы производим все действия на нашем сервере. Это – тот самый пользователь, который не является root-ом, но имеет привилегии sudo
. В данном руководстве таким пользователем является your-user
. Поэтому следующей командой мы установим владельца и группу для директории нашего сайта:
$ sudo chown -R your-user:www-data /var/www/my-domain.host
Здесь не забудьте поменять your-user
на имя своего пользователя, а my-domain.host
на название вашего сайта.
Теперь установите необходимые права для всех директорий вашего сайта:
$ sudo find /var/www/my-domain.host/ -type d -exec chmod 750 {} \;
А также, необходимые права для всех файлов, находящихся там:
$ sudo find /var/www/my-domain.host/ -type f -exec chmod 640 {} \;
Настройка WordPress
Теперь, когда установка завершена, вы можете подключиться к WordPress через его веб-интерфейс и дальнейшую настройку произвести уже там. Чтобы это проделать, наберите в навигационной строке браузера https://my-domain.host/wp-admin
(не забудьте поменять my-domain.host
на имя вашего домена):
Здесь следует выбрать удобный для вас язык.
Нажмите Вперёд
и вы попадёте на страницу первоначальной настройки WordPress:
В этом окне введите созданные ранее в MySQL название базы данных, имя пользователя и его пароль, после чего нажмите Отправить
.
Если введённые данные корректны, система предложит вам Запустить установку
. В открывшемся окне придумайте и наберите Название сайта
и Имя пользователя
. Также, сохраните предложенный системой пароль. Его вы будете использовать для подключения к WordPress. Наконец, введите свой адрес электронной почты и нажмите Установить WordPress
.
В следующем окне нажмите Войти
.
Далее, наберите имя вашего пользователя и его пароль и вы попадёте на домашнюю страницу WordPress:
На этом настройка WordPress закончена. Ваша система готова к эксплуатации.
Установка WP-CLI
В этом разделе мы установим на наш сервер последнюю версию инструментария WP-CLI. Дистрибутив WP-CLI упакован в виде Phar-файла, который является форматом исполняемых архивов приложений PHP.
Запустите загрузку необходимого Phar-файла при помощи утилиты curl
:
$ 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
Теперь вы уже можете запустить файл wp-cli.phar
, чтобы получить доступ к WP-CLI. Чтобы сделать возможным доступ к WP-CLI из любого места операционной системы, переместите файл в каталог /usr/local/bin/
и переименуйте его в wp
:
$ sudo mv wp-cli.phar /usr/local/bin/wp
Теперь выполните следующую команду, которая покажет вам версию установленного пакета WP-CLI:
$ wp cli version
В нашем случае вывод команды будет следующим:
Настройка плагинов WordPress
Наверное, не всем удобно управлять плагинами WordPress используя веб-интерфейс, поэтому существует возможность перенести эти задачи в WP-CLI. В этом разделе мы попробуем устанавливать, обновлять и удалять плагины WordPress с использованием командной строки.
Просмотр списка установленных плагинов
Увидеть установленные в настоящий момент плагины можно через веб-интерфейс WordPress. Для этого достаточно нажать на соответствующую вкладку панели навигации:
Теперь, попробуйте сделать это при помощи командной строки. Для этого, перейдите в каталог, из которого вы запускаете WordPress:
$ cd /var/www/my-domain.host/wp-admin
Не забудьте, что вам нужно заменить my-domain.host
на имя вашего сайта.
И следующей командой выведите список плагинов WordPress, установленных в вашей системе:
$ wp plugin list
Вы увидите, что это – тот же самый список:
Поиск плагинов
Если вам нужно найти недостающие вам плагины, вы можете использовать поисковую строку на странице репозитория плагинов WordPress. Однако, поиск через WP-CLI существенно быстрее, например:
$ wp plugin search text
Результатом выполнения этой команды будет список 10 плагинов, наиболее близко соответствующих вашему запросу. Вывод запроса по поиску text
в нашем случае выглядит следующим образом:
Вывести вторую страницу результатов поиска вы можете используя опцию --page=2
:
$ wp plugin search text --page=2
Обратите внимание на колонку slug
. Значение этого поля следует использовать для установки и обновления плагина через командную строку.
Установка плагинов
Для установки плагинов используется команда wp plugin install
. Значение колонки slug
для выбранного из списка плагина в данной команде указывается как аргумент, например:
$ wp plugin install enhanced-text-widget
Данная команда запускает установку плагина:
Вы можете проверить, установился ли выбранный плагин, с помощью уже известной вам команды:
$ wp plugin list
Установленный плагин теперь также присутствует в списке:
Вы можете, если нужно, установить более старую версию плагина. Для этого используйте опцию --version
:
$ wp plugin install joy-of-text --version=2.2.9
В случае, если необходимо установить плагин, которого нет в репозитории WordPress, следует в качестве аргумента для команды wp plugin install
указывать ссылку на zip-архив, содержащий дистрибутив искомого плагина. Такая команда будет выглядеть примерно так:
$ wp plugin install https://my-site.space/wp/downloads/my-plugin.zip
Активация и деактивация плагинов
Установку и одновременно активацию плагина можно осуществить командой wp plugin install
с использованием опции --activate
, например:
$ wp plugin install joy-of-text --activate
Для активации и деактивации уже установленного плагина используйте команды wp plugin activate
и wp plugin deactivate
соответственно, например:
$ wp plugin activate enhanced-text-widget
$ wp plugin deactivate joy-of-text
Чтобы сделать то же самое, только не с каким-то одним плагином, а сразу со всеми установленными, следует использовать опцию --all
:
$ wp plugin activate --all
$ wp plugin deactivate --all
Обновление плагинов
Для обновления установленных плагинов используется команда wp plugin update
. Обновлять можно, как какой-то из выбранных вами плагинов, так и все сразу. В первом случае, в качестве аргумента следует указывать название обновляемого плагина, во втором – опцию --all
, например:
$ wp plugin update akismet
или:
$ wp plugin update --all
Удаление плагинов
И наконец, команда wp plugin delete
предназначена для удаления плагинов из системы. В качестве аргумента укажите один или несколько наименований плагинов, которые вы хотите удалить, например:
$ wp plugin delete enhanced-text-widget joy-of-text
Вывод данной команды будет выглядеть так:
Удалить все установленные плагины вы можете при помощи этой же команды, но с применением опции --all
:
$ wp plugin delete --all
Настройка тем
Управление темами через WP-CLI почти идентично тому, как вы проделывали это с плагинами. В этом разделе мы посмотрим, как создавать и применять новые темы к сайту WordPress при помощи команды wp theme
.
Во первых, давайте посмотрим, какие темы установлены в настоящее время в нашей системе:
$ wp theme list
Ответом на наш запрос должен быть список установленных тем:
Из этого списка видно, что активной является тема twentytwentyone
. Если нужно найти что-нибудь ещё, используйте поиск, например, так:
$ wp theme search animal
Так же, как и в случае с плагинами, вывод команды будет содержать 10 наиболее подходящих вашему запросу тем:
Для того, чтобы посмотреть следующие страницы, так же используйте опцию --page
.
Давайте для примера пойдём дальше и установим тему Wildlife Lite
, так как у неё весьма высокий рейтинг. Чтобы увидеть изменения, которые будут происходить с оформлением страниц на вашем сайте, перейдите в веб-интерфейсе на “Страницы – Пример страницы – Перейти”. Далее, используйте в WP-CLI команду wp theme install
и сразу при установке активируйте тему при помощи опции --activate
:
$ wp theme install wildlife-lite --activate
Вывод при выполнении данной инструкции будет выглядеть так:
Теперь обновите страницу в браузере и вы увидите, что оформление вашего сайта изменилось:
Если при выводе команды wp theme list
в колонке update
стоит значение available
, то значит, соответствующую тему вы можете обновить. Например, обновление всех тем запускается при помощи команды:
$ wp theme update --all
Команда wp theme
имеет множество вспомогательных команд, которые могут помочь вам в управлении темами. Для того, чтобы изучить все варианты применения этой команды, используйте вспомогательную команду help
:
$ wp help theme
или:
$ wp help theme install
Создание постов и страниц
Управление контекстом с помощью командной строки в WP-CLI может осуществляться несколькими способами. Писать посты в терминале вашего сервера может быть более удобно, если вы не имеете проблем в обращении с текстовыми редакторами, такими как nano
или vim
.
Создание и удаление записей
Вывести список постов, опубликованных на вашем сайте, вы можете при помощи команды:
$ wp post list
Данный список выглядит примерно так:
Вы видите, что у нас это – всего лишь один пост. Его название – Привет, мир!
, его ID – 1
.
Давайте этот пост удалим. Для удаления будем использовать команду wp post delete
и ID нашего поста – 1
:
$ wp post delete 1
Вывод исполнения этой команды выглядит так:
Для создания поста в WP-CLI используется команда wp post create
:
$ wp post create --post_status=publish --post_title="This post is created with WP-CLI!" --edit
В данном случае команда использует опцию --post_status
для того, чтобы определить статус создаваемого поста. Устанавливая значение опции в publish
, вы публикуете пост сразу после выполнения команды. Если же вы не планируете мгновенную публикацию, вы можете создать пост в виде черновика. Для этого установите значение опции --post_status
в draft
. В опции --post_title
указывается заголовок создаваемого поста. А опция --edit
обеспечивает открытие дефолтного текстового редактора vim
для написания тела поста. При запуске данной команды как раз и откроется vim
, где необходимо внести некий текст в качестве содержимого поста. После сохранения изменений и закрытия редактора наш пост будет опубликован. В нашем случае, после открытия vim
мы нажали клавишу i
, тем самым активировав режим редактирования, а именно, режим вставки текста с текущей позиции. Набрали текст – I want to create the posts for my WordPress site with WP-CLI.
После чего вышли из режима редактирования при помощи Esc
. Затем перешли в командный режим, набрав :
, и покинули редактор сохранив изменения набрав wq
и нажав Enter
:
Теперь, мы можем увидеть наш пост в списке опубликованных, перейдя на сайте во вкладку Записи
:
А также, мы можем увидеть и содержимое самого поста, кликнув на ссылку Перейти
:
Импорт записей
Существует ещё один метод создания постов через WP-CLI, а именно, импорт содержимого поста из текстового файла. Чтобы увидеть, как это происходит, для начала создадим этот самый текстовый файл:
$ touch /tmp/myfile.txt
Теперь, откроем созданный файл для того, чтобы наполнить его содержимым:
$ sudo nano /tmp/myfile.txt
Когда мы закончим наполнение файла, необходимо будет закрыть его с сохранением внесённых изменений. И следующей командой мы запустим импорт содержимого из созданного файла. Всё, что нужно, это – указать путь к этому файлу после вспомогательной команды create
, например:
$ wp post create /tmp/myfile.txt --post_title='This Post Is Imported From The File' --post_status=publish
Также, вместо поста вы можете создать страницу. Для этого в опции --post_type
укажите значение page
:
$ wp post create --post_title="My first page." --post_status=draft --post_type=page
Созданную страницу вы сможете найти на вашем сайте во вкладке Страницы
:
Генерация записей
Ещё одним методом создания постов в WP-CLI является метод генерации постов и страниц, содержащих пустые данные. Вы можете использовать эту возможность при проверке темы или плагина на стадии их разработки. Генерация постов запускается командой:
$ wp post generate
По умолчанию команда создаёт 100 пустых постов. Если вам нужно поменять их количество, используйте опцию --count
, например:
$ wp post generate --count=10
Если есть необходимость создать некоторое количество пустых страниц вместо постов, применяется опция --post_type
:
$ wp post generate --count=10 --post_type=page
В любом случае, вы можете использовать команду wp help post generate
, чтобы узнать о других доступных вариантах, которые помогут вам достичь желаемого результата.
И в заключении данного раздела, следует упомянуть о таком аспекте в работе WordPress, как изменения версий документов. Нередко сайты на WordPress имеют большое количество изменённых версий своих страниц по причине многократного обновления их содержимого. Это может пригодиться владельцу страницы, если есть необходимость вернуть предыдущий вариант её контента. Но в то же время, большое их количество снижает производительность сайта. Следующая команда позволяет вычистить все версии документов из базы данных WordPress:
$ wp post delete $(wp post list --post_type='revision' --format=ids) --force
Обратите внимание, что в скобках указана команда, которая выдаёт список идентификаторов всех версий документов. Этот список и будет передан на исполнение вспомогательной команде delete
. Опция --force
в данном случае необходима, так как посты типа revision
не поддерживают отправку в корзину.
Управление базой данных
Одной из наиболее полезных функций WP-CLI является возможность взаимодействовать с СУБД MySQL. Например, если есть необходимость, вы можете подключиться к командной строке MySQL используя следующую команду:
$ wp db cli
Таким образом, вы можете использовать оболочку MySQL для решения своих задач, и по окончании можете покинуть её набрав exit
.
Также, можно применять разовые запросы к базе данных MySQL не подключаясь к её оболочке. Для этого, MySQL-запрос передаётся в качестве аргумента команды WP-CLI. В качестве примера выведем список пользователей, зарегистрированных в базе данных WordPress:
$ wp db query "SELECT user_login,ID FROM wp_users;"
В нашем случае, вывод запроса будет таким:
Опираясь на это, вы можете использовать любой MySQL-запрос к базе данных WordPress.
Резервное копирование и восстановление
В WP-CLI существует возможность сохранения резервных копий вашей базы данных WordPress. Следующая команда разместит в текущем каталоге файл дампа SQL. Такой файл будет содержать всю вашу базу данных WordPress, включая страницы, посты, учётные записи пользователей и прочее:
$ wp db export
Созданный файл будет иметь расширение .sql
. Как только он будет создан, разумно будет скопировать его в директорию, предназначенную для хранения резервных копий вашей базы данных.
Файл дампа можно будет использовать, например, при переносе вашего сайта WordPress с одного хостинга на другой. Перенос осуществляется при помощи команды wp db import
, например:
$ wp db import wpdbase-2021-07-04-d3042a8.sql
Поиск и замена
При помощи WP-CLI можно также выполнять операции поиска и замены. Следующая команда запускает пробный поиск для того, чтобы вы могли понять, сколько элементов будет изменено. В опции --dry-run
первое значение является компонентом поиска, второе – тем, на что вы хотите это заменить:
$ wp search-replace --dry-run 'whatisearch.ru' 'whatireplace.ru'
Выводом команды будет количество экземпляров, предназначенных для замены. Если вы уверены, что хотите такую замену произвести, просто удалите опцию --dry-run
из предыдущей команды и запустите её на исполнение.
Обновление WordPress
С помощью WP-CLI можно установить обновление ядра WordPress. Проверка текущей версии запускается командой:
$ wp core version
Доступные для установки версии вы можете увидеть запустив на исполнение команду:
$ wp core check-update
Если обновление доступно, его установка запускается командой:
$ wp core update
Плюс ко всему, вы можете установить какую-либо определённую версию, указав её в опции --version
:
$ wp core update --version=5.7.2
В то же время, вы можете вернуться и на более старую версию WordPress. Для этого используйте опцию --force
, но это крайне не рекомендуется:
$ wp core update --version=5.6 --force
Вместо заключения
Для администраторов и разработчиков, работающих с WordPress в командной строке, WP-CLI является мощным набором инструментов. В данном руководстве мы лишь частично коснулись возможностей, предоставляемым им.
WP-CLI содержит ещё много возможностей, позволяющих добиться ещё большего, не используя при этом веб-интерфейс. Чтобы узнать больше, используйте команду wp help
, дополнив её соответствующей вспомогательной командой.