Интерфейс командной строки (CLI) всегда был популярен в мире разработчиков, потому что он предоставляет инструменты, которые повышают производительность и ускоряют процесс разработки. На первый взгляд может показаться трудно поверить, что использование командной строки для выполнения определенных задач становится проще, чем использование графического интерфейса. Цель этой статьи состоит в том, чтобы прояснить ваши сомнения по поводу этого, по крайней мере в отношении WordPress задач.
WordPress предоставляет графический пользовательский интерфейс для каждой административной задачи, и это помогло сделать его самой популярной системой управления контентом в Интернете. Но с точки зрения производительности, работа с командной строкой позволяет выполнить многие такие задачи более эффективно и быстро.
WP-CLI представляет собой набор командных строк инструментов, которые обеспечивают такую функциональность для управления wordPress веб-сайтов.
В этом учебнике я расскажу о преимуществах использования и расширения WP-CLI, и я представлю несколько передовых команд, чтобы сделать вашу жизнь проще при работе с WordPress.
Дальнейшее чтение на SmashingMag:
- Знакомьтесь ImageOptim-CLI, инструмент сжатия пакета
- Мощные инструменты командной строки для разработчиков
- Правильное WordPress Filesystem Разрешения и собственности
Установки
Примечание: Следующие шаги требуют, как UNIX-среда (OS X, Linux или FreeBSD). Если вы являетесь пользователем Windows, вам понадобится инструмент командной строки, такой как Cygwin или виртуальная машина.
Установка WP-CLI проста. Основная идея заключается в том, чтобы загрузить файл PHP и положить его где-то для того, чтобы иметь возможность запустить его из любого места. Вы можете скачать скрипт WP-CLI из репозитория GitHub:
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
Затем необходимо сделать файл исполняемым:
chmod +x wp-cli.phar
Последним шагом является перемещение файла в папку, чтобы вы могли выполнить его из любого места. Переименование файла в что-то легко запоминание и тип также хорошая идея; это причина, почему wp
наиболее часто используемое имя:
sudo mv wp-cli.phar /usr/local/bin/wp
Установка завершена, и вы должны иметь возможность вводить команды WP-CLI. Вы можете проверить, был ли этот процесс успешно завершен со следующей командой:
wp --info
Если все прошло хорошо, вы должны получить выход, подобный этому:
PHP binary: /usr/bin/php
PHP version: 5.5.24
php.ini used: /etc/php.ini
WP-CLI root dir: phar://wp-cli.phar
WP-CLI global config: /Users/kouratoras/.wp-cli/config.yml
WP-CLI project config:
WP-CLI version: 0.19.2
Общие задачи
Эта статья посвящена более продвинутому использованию WP-CLI, но мы можем начать с некоторых обычных задач, которые могут быть выполнены на командной строке.
Установка веб-сайта WordPress
Основная команда WP-CLI core
, которая предлагает набор мощных инструментов для управления установками WordPress. Первый шаг в создании нового веб-сайта WordPress заключается в том, чтобы загрузить пакет. Перейдите к нужному каталогу и введите:
wp core download
Это будет скачать последнюю версию WordPress на английском языке ( en_US
). Если вы хотите скачать другую версию или язык, используйте –version
–locale
и параметры. Например, для использования греческой локализации и версии 4.2.2 можно ввести:
wp core download --version=4.2.2 --locale=el_GR
После завершения загрузки можно создать wp-config.php
файл с помощью core config
команды:
wp core config --dbname=databasename --dbuser=databaseuser --dbpass=databasepassword --dbhost=localhost --dbprefix=prfx_
Эта команда будет использовать аргументы и создавать wp-config.php
файл. Наконец, чтобы установить WordPress, используйте core install
команду:
wp core install --url=example.com --title="WordPress Website Title" --admin_user=admin_user --admin_password=admin_password --admin_email="admin@example.com"
Ядро обновления
Если установка WordPress нуждается в обновлении, используйте wp core update
wp core update-db
подкоманды для обновления основных файлов и базы данных (если база данных нуждается в обновлении).
Обновления WordPress, особенно исправления безопасности, имеют важное значение. Чтобы сделать их быстрее, используйте core update
команду и (при необходимости) core update-db
команду:
wp core update
wp core update-db
Вы всегда можете проверить текущую версию установки с core version
помощью:
wp core version
Первоначально обновление в командной строке может показаться не более эффективным, чем делать это с приборной панели, но если вы поддерживаете несколько установок WordPress, это может сэкономить много времени и кликов. Вы можете создать скрипт и обновить их все сразу:
#!/bin/bash
declare -a sites=('/var/www/wp1' '/var/www/wp2' '/var/www/wp3')
for site in "${sites[@]}";
do
wp --path=$site core update
done
В любом случае рекомендуется резервное копирование базы данных до того, как будет рекомендовано какое-либо обновление:
wp db export backup.sql
Управление плагинами
Аналогичным образом, управление плагинами является вопросом одной команды. Например, plugin status
возвращает информацию о установленных плагинах и их статусе – A
означает активный, означает I
неактивный и означает обновление доступно – UA
выход, как это:
5 installed plugins:
UA smooth-scroll-up 0.8.9
I wordpress-beta-tester 1.0
A wordpress-importer 0.6.1
A wpcli-commands 1.0
Другие подкоманды, связанные с плагинами, являются install
, , , и , которые могут быть activate
использованы, как в следующем deactivate
update
delete
search
примере:
wp plugin install wordpress-importer --activate
wp plugin deactivate wordpress-importer
wp plugin delete wordpress-importer
wp plugin update --all
wp plugin search import
Управление темы
Как правило, те же команды могут быть использованы для обработки темы веб-сайта просто заменив, plugin
так что нет смысла theme
углубляться в это. Одна примечательная команда scaffold
, которая создает пустую тему ребенка, что делает этот процесс гораздо короче:
wp scaffold child-theme my-child-theme --parent_theme=twentyfifteen --theme_name='My Child Theme' --author='Konstantinos Kouratoras' --author_uri=http://www.kouratoras.gr --theme_uri=http://wp.kouratoras.gr --activate
Манипулирование данными
Помимо простых post create
команд, post edit
как, post delete
и, WP-CLI предоставляет инструменты для управления должностями. Если вам нужно много сообщений для тестирования кода в плагине или теме, вы можете использовать post generate
команду:
wp post generate --count=1000
Вы также можете экспортировать текущее содержимое и перенести его в другую установку WordPress. Для этого необходимо установить плагин Importer:
wp plugin install wordpress-importer --activate
И тогда вы будете использовать export
и команды для завершения import
передачи:
wp export
wp import test.xml --authors=create
Управление сообщение пересмотра
По умолчанию WordPress хранит каждый пересмотр поста в базе данных. Это означает, что в конечном итоге вы будете иметь огромное количество информации в таблице сообщений вашего сайта.
Для решения этой проблемы можно использовать плагин wp-revisions-cli, который является продолжением WP-CLI, который добавляет функциональность для управления изменениями должностей. Это может быть установлен в качестве общего плагина WordPress, и он предлагает набор команд, таких как clean
, list
и status
. Например, используя wp wp revisions list
список изменений в текущих публикациях:
+--------------+-------------+-----+
| post_title | post_parent | ID |
+--------------+-------------+-----+
| Hello world! | 1 | 894 |
+--------------+-------------+-----+
Носителя
Некоторые административные задачи, которые трудно выполнить, относятся к изображениям и средствам массовой информации в целом. WP-CLI предоставляет некоторые инструменты, чтобы сэкономить время здесь.
Массовые изображения импорта
Это не редкость для клиента, чтобы предоставить набор изображений и попросить вас импортировать их на свой сайт. Делать это через панель администратора больно. Вместо этого, используя медиа-инструмент WP-CLI, вы можете выполнить эту задачу в одной команде:
wp media import images_folder/*
Регенерировать медиа
При создании новых размеров изображений в процессе разработки необходимо регенерировать эскизы. Конечно, для достижения этой цели можно использовать сторонний плагин или пользовательский код PHP, но для достижения этой цели требуется значительно больше времени, чем команда WP-CLI:
wp media regenerate
Существуют бесконечные возможности, потому что вы можете объединить несколько команд, чтобы указать целевые изображения для отсвачения. Например, для регенерации изображений для постов определенной категории можно использовать следующую команду:
wp media regenerate $(wp eval 'foreach( get_posts(array("category" => 2,"fields" => "ids")) as $id ) { echo get_post_thumbnail_id($id). " "; }')
Операции с базами данных
Когда мы говорим о передовом управлении WordPress с помощью командной строки, операции с базами данных всегда приходят в виду. WP-CLI предоставляет инструменты для такого рода задач. Вы можете запустить простые запросы:
wp db query "SELECTFROM wp_users;"
И вы можете обрабатывать операции баз данных, такие как импорт, экспорт и оптимизация:
wp db export
wp db import backup.sql
wp db optimize
Экспортная команда также может быть использована в скрипте или задания cron для обработки и планирования резервных данных баз данных.
Поиск и замена
Разработка веб-сайта на локальном сервере или сервере разработки, а затем переход на другой сервер, когда все готово, является обычной практикой. Копирование файлов и миграция базы данных являются простыми шагами. Замена старых URL-адресов на новые в записях базы данных является более сложной частью этой процедуры, поскольку URL-адреса также существуют в серийных данных, для которых простой поиск и замена не будут работать.
WP-CLI поможет вам выполнить эту задачу. search-replace
Команда заменяет старый URL на новый во всех записях баз данных, включая те, которые содержат сериализованные данные.
wp search-replace 'dev.example.com' 'www.example.com'
В этом случае WP-CLI распаковывает данные JSON, выполняет действие замены и снова упаковывает данные в вход в базу данных.
Если вы хотите увидеть, сколько экземпляров этого действия поиска в вашей базе данных без выполнения команды замены, вы можете запустить предыдущую команду с –dry-run
помощью:
wp search-replace --dry-run 'dev.example.com' 'www.example.com'
Полученный выход будет примерно следующим:
+---------------------+-----------------------+--------------+------+
| Table | Column | Replacements | Type |
+---------------------+-----------------------+--------------+------+
| wpcli_options | option_value | 2 | PHP |
| wpcli_posts | post_content | 1 | SQL |
| wpcli_posts | guid | 28 | SQL |
+---------------------+-----------------------+--------------+------+
Работа с WordPress Multisite
Огромным преимуществом WP-CLI и командной строки в целом является возможность автоматизации повторяющихся задач с помощью скриптов. Это также относится к Многоузловой сети WordPress. Вместо того, чтобы посещать панель мониторинга каждого веб-сайта для выполнения задачи, можно упростить процесс, используя некоторые строки кода. Например, вы можете использовать следующий скрипт для установки плагина WordPress’ Importer:
#!/bin/bash
for site in $(wp site list --field=url)
do
wp plugin install wordpress-importer --url=$site --activate
done
Если вы хотите избежать дополнительных шагов создания и запуска файла скрипта, можно выполнить предыдущий пример с помощью одной команды:
for site in $(wp site list --field=url); do wp plugin install wordpress-importer --url=$site --activate; done
Использование WP-CLI удаленно с SSH
Если вы уже установили WP-CLI на удаленном сервере или если ваш хостинг-провайдер поддерживает это, то вы можете подключиться через терминал SSH и использовать команды WP-CLI. Единственное, что вам понадобится, это клиент SSH и учетные данные хоста для подключения к серверу.
Пользователям Linux и Mac OS X не нужно дополнительное программное обеспечение, так как это можно сделать с помощью приложения Terminal. Для пользователей Windows существуют сторонние инструменты, наиболее популярными из которых являются Putty. Используя любой из упомянутых выше инструментов, вы можете подключиться к серверу с помощью этой команды:
ssh username@host
Вам будет предложено для вашего пароля и, если вы подключитесь успешно, вы будете иметь интерфейс командной строки для использования WP-CLI инструменты для ваших веб-сайтов с этим хозяином. В случае, если WP-CLI недоступен, вы можете следовать шагам, описанным на официальном сайте, чтобы установить его. В конце процесса можно проверить, что он был успешно установлен, введя следующую команду:
wp cli version
Если все прошло хорошо, вы получите текущую версию.
Выполнить команды бесшовно
Подключение к серверу и навигация по правильному пути для выполнения команд WP-CLI немного скучно. Вместо этого, вы можете использовать WP-CLI SSH, который представляет собой пакет, который позволяет вызвать WP-CLI из локальной оболочки,без необходимости входа в удаленный хост.
Перед переходом к этапам установки WP-CLI SSH необходимо настроить в папке индекс пакета WP-CLI. ~/.wp-cli
(Если его не существует, создайте этот каталог.)
cd ~/.wp-cli
Вы должны будете установить Композитор, если вы еще не сделали этого раньше:
curl -sS 'https://getcomposer.org/installer' | php
Создайте (или используйте существующий) composer.json
файл:
php composer.phar init --stability dev --no-interaction
php composer.phar config bin-dir bin
php composer.phar config vendor-dir vendor
Добавьте индекс пакета WP-CLI:
php composer.phar config repositories.wp-cli composer 'http://wp-cli.org/package-index/'
Создайте (или используйте существующий) config.yml
файл и поместите эти строки в него:
require:
- vendor/autoload.php
Теперь все должно быть готово для установки пакета WP-CLI SSH:
php composer.phar global require x-team/wp-cli-ssh dev-master
Пришло время создать файл конфигурации и настроить узлы. Создайте wp-cli.yml
файл и вставьте следующие настройки:
ssh:
production:
# The %pseudotty% placeholder gets replaced with -t or -T depending on whether you're piping output
# The %cmd% placeholder is replaced with the originally invoked WP-CLI command
cmd: ssh %pseudotty% production.example.com %cmd%
# Passed to WP-CLI on the remote server via --url
url: production.example.com
# We cd to this path on the remote server before running WP-CLI
path: /var/www/production
# WP-CLI over SSH will stop if one of these is provided
disabled_commands:
- db drop
- db reset
В предыдущем примере замените production.example.com
URL-адрес сервера и /var/www/production
путь к установке WordPress. В disabled commands
разделе можно настроить команды WP-CLI, которые не будут разрешены на удаленном сервере. Вы можете создать столько хостов, сколько пожелаете, используя разные имена для каждого из них.
Если все настроено правильно, вы сможете запускать команды с помощью ssh
подкоманды и предоставления аргумента узла:
wp ssh plugin status --host=production
В случае, если вы будете работать в основном на удаленном сервере, есть также возможность создать псевдоним в ~/.bash_profile
файле, так что команда будет использовать этот wp
хост по умолчанию:
alias wp="wp ssh --host=production"
Модульные тесты
Единичных тестов может быть очень полезно для разработчиков плагинов. Они могут выявить ошибки очень быстро и гарантировать, что новая версия вашего программного обеспечения не будет нарушать ничего. Тем не менее, создание тестов является сложным процессом, потому что вы должны настроить PHPUnit, настроить библиотеку тестирования WordPress и тестовые файлы конфигурации. Для последних двух задач WP-CLI может облегчить вашу жизнь и автоматически создавать необходимые файлы.
Первыми первыми вещами. Вам нужно установить PHPUnit; следить за руководством на официальном сайте. После этого WP-CLI примет меры и поможет вам создать файлы, необходимые для выполнения тестов PHPUnit с одной командой:
wp scaffold plugin-tests my-plugin
Если вы переходите в каталог плагина, вы увидите новые папки и файлы:
.travis.yml
bin/
phpunit.xml
tests/
Можно использовать install-wp-tests.sh
файл в bin
папке для инициализации среды тестирования:
bash bin/install-wp-tests.sh test_database user 'pass' localhost latest
Используемые параметры:
-
test_database
база данных, которая будет использоваться для вставки тестовых данных -
user
Пользователь базы данных MyS’L -
pass
Пароль базы данных MyS’L -
localhost
Ведущий MyS’L -
latest
Версия WordPress, которая вы используете
Предыдущая команда настраивала бы примерный модульный тест, который на самом деле ничего не делает, но его можно использовать в качестве стартового файла для создания собственного теста. Файл tests/test-sample.php
содержит и содержит следующий исходный код:
class SampleTest extends WP_UnitTestCase {
function test_sample() {
// replace this with some actual testing code
$this->assertTrue( true );
}
}
Все уже готово, и вы можете запустить модульный тест плагина:
phpunit
Мы не будем идти дальше в модульных тестов, потому что они за рамки этой статьи, но вы можете найти тонну ресурсов на официальном сайте PHPUnit и вокруг Интернета.
Расширение WP-CLI
Если вы дошли до этой точки, вы можете быть убеждены, что WP-CLI является мощным инструментом в руках разработчика. Но это еще не конец истории, потому что вы также можете расширить встроенную функциональность с помощью кода. Есть два способа сделать это. Вы можете загрузить и выполнить код PHP из файла или создать свой собственный плагин, который создает пользовательскую команду.
Выполнить файл PHP
Если вы хотите протестировать фрагмент PHP, нет необходимости включать его в файл WordPress. WP-CLI предоставляет eval-file
команду, которая выполняет общие файлы PHP, загрузив WordPress раньше. Например, если вы хотите напечатать заголовок из случайного поста WordPress, исходный код для этого действия будет что-то вроде этого:
global $wpdb;
$random_post = $wpdb->get_var(
"SELECT post_title
FROM $wpdb->posts
WHERE post_type = 'post'
AND post_status = 'publish'
ORDER BY rand()
LIMIT 1"
);
echo "Random post: $random_post";
Сохраните его в файле с именем script.php
и проверьте вывод, введя эту команду:
wp eval-file ./script.php
Создавайте пользовательские команды с помощью плагина
Двигаясь еще на один шаг, вы можете создать пользовательские плагины WordPress, чтобы расширить встроенную функциональность WP-CLI и создать свои собственные команды. Ваш файл плагина должен иметь класс для каждой команды и общедоступные методы для каждой подкоманды.
Давайте посмотрим на это в действии. Предположим, что требуется создать команду, содержащую три подкоманды:
-
hello
берет имя в качестве позиционного аргумента и говоритhello
-
bye
берет имя в качестве ассоциативного аргумента и говоритbye
-
random
печатает название случайного WordPress пост
Мы создадим класс, названный My_Commands
, который содержит три общественные функции: , и hello
bye
random
. Эти функции принимают два аргумента: $args
, который содержит позиционные аргументы, и $assoc_args
, который содержит ассоциативные аргументы.
В нашем примере, первое подкомандование будет иметь name
позиционный аргумент, который будет принимать в качестве вклада для печати hello
:
function hello( $args, $assoc_args ) {
list( $name ) = $args;
WP_CLI::success( "Hello, $name!" );
}
Второе подкомандное подразделение будет иметь name
ассоциативный аргумент, который будет извлечен из $assoc_args
массива:
function bye( $args, $assoc_args ) {
$name = 'name';
if( $assoc_args[ 'name' ] ) {
$name = $assoc_args[ 'name' ];
}
WP_CLI::success( "Bye, $name!" );
}
Третье подкомандование не будет принимать никаких аргументов. Он просто выполнить запрос базы данных, получить случайный пост и распечатать заголовок:
function random ( $args, $assoc_args ) {
global $wpdb;
$random_post = $wpdb->get_var(
"SELECT post_title
FROM $wpdb->posts
WHERE post_type = 'post'
AND post_status = 'publish'
ORDER BY rand() LIMIT 1"
);
WP_CLI::success( "Random post: $random_post" );
}
Наконец, вам придется зарегистрировать свой класс в качестве команды WP-CLI, используя add_command
вызов. Эта функция использует в качестве аргументов название команды и название класса:
WP_CLI::add_command( 'mycommands', 'My_Commands' );
Обернув весь код в плагин WordPress, вы бы в конечном итоге со следующим файлом:
/*
Plugin Name: WP-CLI Commands
Version: 1.0
description: >-
Extending WP-CLI with custom commands
Author: Konstantinos Kouratoras
Author URI: http://www.kouratoras.gr
*/
if( defined( 'WP_CLI' ) && WP_CLI ) {
class My_Commands {
function hello( $args, $assoc_args ) {
list( $name ) = $args;
WP_CLI::success( "Hello, $name!" );
}
function bye( $args, $assoc_args ) {
$name = 'name';
if( $assoc_args[ 'name' ] ) {
$name = $assoc_args[ 'name' ];
}
WP_CLI::success( "Bye, $name!" );
}
function random ( $args, $assoc_args ) {
global $wpdb;
$random_post = $wpdb->get_var("SELECT post_title FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' ORDER BY rand() LIMIT 1");
WP_CLI::success( "Random post: $random_post" );
}
}
WP_CLI::add_command( 'mycommands', 'My_Commands' );
}
Вы можете подтвердить, что ваша команда была успешно зарегистрирована, набрав следующее:
wp mycommands
Это выводит список всех доступных команд:
usage: wp mycommands bye --name=name
or: wp mycommands hello name
or: wp mycommands random
Все готово для выполнения ваших первых пользовательских команд WP-CLI:
wp mycommands hello world
wp mycommands bye --name="Joe"
wp mycommands random
Соответственно, выход будет:
Success: Hello, world!
Success: Bye, Joe!
Success: Random post: This is a title of a post
Заключение
Теперь у вас есть хорошее представление о возможностях WP-CLI. Эти возможности становятся бесконечными, если вы считаете, что вы можете расширить основные функциональные возможности и создать свои собственные команды. Конечно, многие другие встроенные инструменты не были упомянуты в этой статье. Вы можете узнать больше о них на официальном сайте.
В случае, если вы хотите увидеть WP-CLI в действии и интегрировать его в свой ежедневный рабочий процесс, вы найдете некоторые ресурсы ниже, чтобы начать работу.
Ресурсы со всего Интернета
- WP-CLI (официальный сайт)
- WP-CLI, GitHub
- WP-CLI вики
- WP-CLI, WordPress Кодекс
- WP-CLI, StackExchange (вопросы)
- Обязательства WP-CLI, группы Google (список рассылки)
Источник: smashingmagazine.com