
На протяжении большей части своей жизни WordPress был построен с использованием простой базы кода. Он опирался на объектно-ориентированный PHP, что есть самой абстрактной системой. Однако в последние несколько лет это меняется к лучшему. Все развивается начиная от модульного тестирования до предварительной обработки CSS и инструментов командной строки. В этой статье мы рассмотрим: WP-CLI.
Что такое WP-CLI?
WP-CLI – это инструмент командной строки разработчиков для управления общими задачами (не столь распространенными) установки WordPress. Он может добавлять или удалять пользователей, сообщения, категории, вставлять тестовые данные, искать и заменять в базе данных, помогать устранять проблемы с производительностью и многое другое!
Уже более десяти лет WP-CLI является проектом с открытым исходным кодом, который поддерживается в основном Даниэлем Бахьюбер с 2003 года. Основная задача WP-CLI – ускорить работу разработчиков WordPress.
За эти годы проект стал намного больше! Теперь это становится даже требованием для других проектов с открытым исходным кодом, таких как Trellis и Bedrock. По состоянию на январь 2017 года WP-CLI официально перешел на WordPress.org и в настоящее время поддерживается совместно с Аленом Шлессером.
WP-CLI v2 был выпущен 8 августа 2018 года, поэтому мы также рассмотрим некоторые изменения и новые возможности.
Где и как скачать WP-CLI ?
Минимальное требование PHP для WP-CLI v2.0.0 это PHP 5.4. Хотя этого достаточно, я рекомендую вам использовать хотя бы поддерживаемую версию PHP, что означает 5.6 или выше.
Для начала вам потребуется установить WP-CLI – это простой процесс. Шаги для Linux и OSX следующие, выполните эти три команды одну за другой:
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar chmod +x wp-cli.phar sudo mv wp-cli.phar /usr/local/bin/wp
Если что-то пойдет не так, или у вас Windows, обратитесь к основным инструкциям или альтернативным методам установки.
После того, как вы закончите, вы сможете набрать команду wp –info и получить полноценный ответ.
Процесс тот же, если вы хотите установить WP-CLI на свой сервер. Не знаете, какую версию вы сейчас используете? Вы всегда можете набрать команду wp cli version, чтобы узнать.
Основы WP-CLI
Наличие доступа к WordPress из командной строки само по себе круто. Но круче всего то что дает вам еще больший контроль и увеличение скорости при использовании сценариев bash.
Сценарии Bash позволяют запускать последовательность команд с помощью одной команды. Вы можете ввести bash install-and-setup.sh и получить следующий результат:
- Загрузить WordPress
- Создать и настроить wp-config.php
- Создать базу данных
- Установить WordPress
- Установить и активировать любые необходимые вам плагины
- Установить и активировать тему
- Загрузить и добавить тестовый контент
Это были бы шаги, которые я предпринял бы для создания новой среды для проекта. Обычно мне понадобилось бы 5-10 минут, особенно если есть несколько подключаемых плагинов. Сделать это одной командой, очевидно, намного быстрее.
Структура команды WP-CLI
Если вы привыкли работать в терминале, для WP-CLI нет ничего особенного. Команды всегда начинаются с wp, за которым следуют команда и подкоманда, а затем требуемые и необязательные параметры, что-то вроде этого:
wp command subcommand requiredparam --optionalparam --optionalparam2=value
Давайте установим тему, чтобы увидеть, как это работает с реальной командой:
wp theme install twentyseventeen --activate
Это установит и активирует тему Twenty Seventeen в вашей установке WordPress.
Полезные примеры
Вы уже знаете достаточно, чтобы начать все что вам нужно. Я рекомендую взглянуть на список команд, попробуйте некоторые из них. Мы рассмотрим некоторые полезные материалы здесь, а затем перейдем к использованию WP-CLI через SSH и используем скрипты bash.
Установка WordPress
Я часто использую WP-CLI для настройки тестовых сред, первым шагом в котором является чистая установка. Вот список команд, которые я запускаю:
wp core download wp core config --dbname=mydbname --dbuser=mydbuser --dbpass=mydbpass --dbhost=localhost --dbprefix=whebfubwef_ --extra-php << PHP define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); PHP wp db create wp core install --url=http://siteurl.com --title=SiteTitle --admin_user=username --admin_password=mypassword --admin_email=my@email.com
Обратите внимание, насколько это круто! Самая последняя версия WordPress загружается с использованием первой команды. Вторая команда устанавливает конфигурационный файл с доступом к базе данных и некоторым дополнительным PHP в конце. Дополнительные константы гарантируют, что у нас есть варианты отладки для тестирования.
Третья команда создает базу данных (WP-CLI использует информацию о доступе к базе данных из файла конфигурации), и, наконец, мы устанавливаем WordPress с использованием нескольких параметров.
Переустановка ядра WordPress
Вы также можете переустановить ядро WordPress с помощью WP-CLI. Следующая команда будет загружать ядро WordPress без стандартных тем и плагинов.
wp core download --skip-content --force
Изменить URL-адрес сайта WordPress
Существует много причин, по которым вам может понадобиться изменить URL-адрес WordPress. Возможно, вы меняете домены, переходите в субдомен, обновляете с www до не-www, перемещаете файлы или даже переносите с HTTP на HTTPS. В любом случае вы можете легко использовать команду wp option update для этого. Ниже приведен пример:
wp option update home 'http://example.com' wp option update siteurl 'http://example.com'
Список текущих плагинов с подробными сведениями
Чтобы получить список текущих плагинов, установленных на сайте, просто используйте следующую команду. В этом примере вы видите, что у нас установлен плагин Schema и Yoast SEO. Он также вернет статус (активный / деактивированный), а также покажет есть ли доступное обновление и какая текущая версия.
wp plugin list

Установка нескольких плагинов
Чтобы установить несколько плагинов, вы можете просто складывать параметры. Вот пример, который загружает и активирует 3 плагина:
wp plugin install advanced-custom-fields jetpack ninja-forms --activate
Обратите внимание, что имена плагинов должны соответствовать их имени в репозитории. Самый простой способ понять это – посетить их страницу и посмотреть URL-адрес или использовать wp plugin search searchterm, который предоставит вам список в терминале.

Вы также можете установить более старые версии плагинов WordPress, если это необходимо, с помощью атрибута –version.
wp plugin install wordpress-seo --version=4.8 --activate
Даже можно делать еще круче, вы можете устанавливать плагины из удаленных файлов, а не только из репозитория. Что очень удобно, если вы разрабатываете плагин или используете премиальный плагин. Следующая команда устанавливает два плагина из репозитория и один из серверов Amazon S3.
wp plugin install advanced-custom-fields jetpack https://d1qas1txbec8n.cloudfront.net/wp-content/uploads/2015/06/23073607/myplugin.zip --activate
Деактивация нескольких плагинов
Чтобы отключить один плагин, вы можете запустить следующую команду.
wp plugin deactivate wordpress-seo
Чтобы отключить все ваши плагины, выполните следующую команду.
wp plugin deactivate --all

Эта вышеприведенная команда может быть полезна, если вы устраняете проблемы совместимости и просто должны деактивировать все плагины одним махом. Затем вы можете вернуться и включить их один за другим.
Обновление плагинов
Вы также можете вручную обновлять плагины WordPress.
Пример:
wp plugin update wordpress-seo

Поиск и замена в базе данных
Одной из основных причин, по которым трудно переносить сайт просто скопировав базу данных, является то, что база данных содержит сериализованные массивы. Если вам нужно заменить все экземпляры http://testsite.com на http://livewebsite.com, ваши сериализованные массивы не будут иметь смысла, потому что количество строк не будет совпадать.
Команда search-replace сначала выполняет инициализацию массивов, затем выполняет поиск и замену, а затем повторно сериализует массивы. Вы можете сделать это с помощью простой команды:
wp search-replace oldstring newstring
Дополнительные параметры позволяют сделать намного больше, включая предварительный просмотр, который будет заменен с помощью –dry-run.
Импорт и экспорт
Существует два способа экспорта контента с WP-CLI. Вы можете создать XML-файл, как это делает инструмент экспорта WordPress, или вы можете экспортировать / импортировать необработанную базу данных. Я нахожу, что вторая версия намного удобнее в моей повседневной жизни, она пригодится при синхронизации сайтов.
wp db export – это все, что вам нужно сделать для создания файла SQL и wp db import file.sql – это все, что вам нужно для его импорта. Будьте осторожны, чтобы не перезаписывать все, что вам нужно, импорт будет в основном сбрасывать существующую базу данных и вместо этого использовать поставляемый SQL-файл.
Управление ролями и возможностями
WP-CLI может легко управлять ролями для вас, используя команду wp role. Это довольно круто, если вы хотите проверить, как ваш плагин работает с настраиваемыми ролями, но вы фактически не создаете роли в своем плагине.
wp role create organizer Organizer wp cap list 'editor' | xargs wp cap add 'organizer' wp cap add 'organizer' 'manage-events'
Вышеупомянутые команды создадут новую роль (Organizer), добавят все возможности из роли редактора в нее, а затем добавят новую возможность: manage-events.
Создание тестовых данных
Мне нравятся всевозможные поддельные функции – те, которые добавляют фиктивный контент на ваш сайт, который вы можете использовать для тестов. WP-CLI имеет пару таких встроенных функций, вот несколько функций, которые будут генерировать пользователей, таксономии и посты.
wp user generate --count=5 --role=editor wp user generate --count=10 --role=author wp term generate --count=12 wp post generate --count=50
Управление событиями WP-Cron
Вы можете управлять событиями WP-Cron и заданием WordPress Cron в WP-CLI. Например, следующая команда предоставит вам текущий список событий cron.
wp cron event list

Удалить временные опции (transients)
Вы можете даже удалить и очистить одну или все временные опции, используя следующую команду.
wp transient delete --all
Очистка таблицы wp_options
Таблица wp_options может быть обычным виновником медленных запросов на вашем сайте из-за автозагружаемых данных, которые остались позади от сторонних плагинов и тем. Ознакомьтесь с этой замечательной статьей WP Bullet о том, как использовать WP-CLI для очистки таблицы wp_options.
Удаляем ревизии в WordPress
На больших сайтах ревизии WordPress могут добавлять тысячи строк в вашей базе данных, которые не нужны. Вы можете удалить ревизии с помощью WP-CLI. Вот пример команды:
wp post delete $(wp post list --post_type='revision' --format=ids)

Индексирование данных с помощью Elasticsearch
Elasticsearch – полнотекстовая поисковая система с открытым исходным кодом. Он используется для индексации данных и невероятно быстрого поиска данных. Вы можете использовать команды ElasticPress WP-CLI для индексирования по SSH. Пример:
wp elasticpress index [--setup] [--network-wide] [--posts-per-page] [--nobulk] [--offset] [--show-bulk-errors] [--post-type]
Работа с многоязычными сайтами
WP-CLI v2.0.0 включает новое семейство команд wp i18n для тех, кто работает с многоязычными сайтами. Например, вы можете создать файл POT для плагина или темы WordPress.
wp i18n make-pot <source> [<destination>] [--slug=<slug>] [--domain=<domain>] [--ignore-domain] [--merge[=<file>]] [--exclude=<paths>] [--skip-js]
Использование WP-CLI с WooCommerce
Работаете с сайтами электронной коммерции? ? Прочитайте потрясающее руководство по разработке WP-CLI WooCommerce от Robot Ninja для быстрых и легких команд, которые вы можете использовать. WP-CLI позволяет создавать список клиентов, заказы и даже создавать пачки продуктов.
Использование WP-CLI удаленно
Одной из лучших вещей, которые вы можете использовать с WP-CLI, является управление удаленными установками WordPress. Это действительно мечта исполнителя веб-сайта.
Чтобы плавно запускать команды WP-CLI на удаленном сервере через SSH, вам ранее понадобилась команда wp-cli-ssh addon. Но с v0.24.0 это теперь входит в сам WP-CLI! ?
Важно: вам необходимо установить WP-CLI как на компьютере, на котором выполняется ваша команда, так и на вашем сервере
Настройка удаленных серверов
Вы можете настроить серверы на глобальном или локальном уровне. Чтобы настроить их глобально, используйте файл config.yml. Вы также можете использовать файлы wp-cli.yml или wp-cli.local.yml в текущем рабочем каталоге.
Конфигурация серверов работает примерно так, вставьте это в один из указанных файлов:
ssh: staging: cmd: ssh %pseudotty% username@server.com %cmd% url: http://myseite.com path: /www/path/to/site/root
Как только все это будет сделано, вы можете ввести следующую команду для обновления WordPress на удаленном сайте:
wp ssh core update --host=staging
Если вы владеете или управляете множеством сайтов, я думаю, вы увидели, что это потрясающе! Сценарий будет запрашивать пароль, но если вы используете ключи RSA для входа в систему, вы также можете отказаться от этого.
Использование скриптов Bash
Сценарии Bash экономят ваше время на автоматизацию задач. Помните, как нам нужно было вводить много команд для установки WordPress? Вы можете сделать это с помощью одного сценария bash. Внутри каталога создайте файл install.sh. Вставьте тот же код, что и раньше, и сохраните его.
wp core download wp core config --dbname=mydbname --dbuser=mydbuser --dbpass=mydbpass --dbhost=localhost --dbprefix=whebfubwef_ --extra-php <<PHP define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); PHP wp db create wp core install --url=http://siteurl.com --title=SiteTitle --admin_user=username --admin_password=mypassword --admin_email=my@email.com
Все, что вам нужно сделать, это создать bash install.sh, и все будет сделано для вас, без вмешательства пользователя. Если вы управляете множеством сайтов, вы можете настроить все свои среды и создать сценарий bash следующим образом:
wp ssh core update --host=clientA wp ssh core update --host=clientB wp ssh core update --host=clientC wp ssh core update --host=clientD
Когда выйдет новая версия WordPress, это может сэкономить вам много времени! Поскольку вы можете делать все, что угодно с WP-CLI, вы можете регулярно обновлять темы и плагины на нескольких клиентских сайтах одновременно.
Заключение
WP-CLI действительно является мечтой разработчика и веб-менеджера. Как разработчики, мы можем создавать сайты, добавлять тестовое содержимое и делать всевозможные импортные / экспортные магии. Менеджеры сайтов могут обрабатывать обновления сайта и другие задачи для нескольких сайтов одной командой из терминала.
Если вы еще не пробовали WP-CLI, я настоятельно призываю вас пойти на это. Есть также группа команд сообщества, таких как WP-CLI-SSH, которые добавляют еще больше замечательных функций! Если у вас возникают проблемы, обязательно ознакомьтесь с документацией об общих проблемах WP-CLI.
Если вы хотите попробовать самую современную архитектуру хостинга WordPress и иметь доступ к отличным инструментам, таким как WP-CLI, попробуйте Kinsta управляемый хостинг WordPress. Да он платный и да он хороший. На данный момент я рекомендую для серьезных проектов именно этот хостинг.
Если вам понравилась эта статья, вам понравится хостинговая платформа Kinsta WordPress. Будь то ускорение вашего сайта или получение поддержки 24×7 от команды WordPress, чтобы помочь вашему бизнесу добиться успеха. Инфраструктура, основанная на Google Cloud, ориентирована на автоматическое масштабирование, производительность и безопасность.