WP-CLI — Расширенное управление WordPress

Интерфейс командной строки (CLI) всегда был популярен в мире разработчиков, потому что он предоставляет инструменты, которые повышают производительность и ускоряют процесс разработки. На первый взгляд может показаться трудно поверить, что использование командной строки для выполнения определенных задач становится проще, чем использование графического интерфейса. Цель этой статьи состоит в том, чтобы прояснить ваши сомнения по поводу этого, по крайней мере в отношении WordPress задач.

wp-cli

WordPress предоставляет графический пользовательский интерфейс для каждой административной задачи, и это помогло сделать его самой популярной системой управления контентом в Интернете. Но с точки зрения производительности, работа с командной строкой позволяет выполнить многие такие задачи более эффективно и быстро.

WP-CLI представляет собой набор командных строк инструментов, которые обеспечивают такую функциональность для управления wordPress веб-сайтов.

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

Дальнейшее чтение на SmashingMag:

Установки

Примечание: Следующие шаги требуют, как 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="[email protected]xample.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 [email protected]

Вам будет предложено для вашего пароля и, если вы подключитесь успешно, вы будете иметь интерфейс командной строки для использования 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 в действии и интегрировать его в свой ежедневный рабочий процесс, вы найдете некоторые ресурсы ниже, чтобы начать работу.

Ресурсы со всего Интернета

Источник: smashingmagazine.com

Великолепный Журнал

Великолепный, сокрушительный, разящий (см. перевод smashing) независимый журнал о веб-разработке. Основан в 2006 году в Германии. Имеет няшный дизайн и кучу крутых авторов, которых читают 2 млн человек в месяц.

Добавить комментарий

%d такие блоггеры, как: