Предыстория
Нужно было написать поддержку WP CLI в плагине.
WP CLI может быть полезен в случаях, когда удобно работать с командной строкой, нежели с веб-интерфейсом. Например для длительных или “тяжелых” задач типа импорта данных или массовых операций перебора. В моем случае основная цель – запуск фоновых процессов импорта товаров и других процессов.
Как запустить WP-CLI на Open Server
Для запуска на WP CLI под Open Server нужно:
Убедиться что у вас php работает из под консоли. Как это сделать описано тут.
Провести процедуру, аналогичную установке composer под OpenServer:
- Открыть консоль OPServer
- Перейти в папку с актуальной версией
PHP cd modules/php/PHP_7.4
- скачать phar файл или набрать в консоли
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
- Проверить работу командой
php wp-cli.phar --info
- Теперь cli по-факту работает. Но нам нужно, что бы она работала аналогично документации.
Для этого создадим ссылкуecho "%~dp0wp-cli.phar" %*>wp.bat
- Профит. Все, теперь мы можем использовать любые команды WP CLI, например: wp
--info
$ wp --info OS: Windows NT 10.0 build 22000 (Windows 10) AMD64 Shell: C:\Windows\system32\cmd.exe PHP binary: c:\OpenServer\modules\php\PHP_7.4\php.exe PHP version: 7.4.29 php.ini used: C:\openserver\modules\php\PHP_7.4\php.ini MySQL binary: MySQL version: SQL modes: WP-CLI root dir: phar://wp-cli.phar/vendor/wp-cli/wp-cli WP-CLI vendor dir: phar://wp-cli.phar/vendor WP_CLI phar path: C:\OpenServer\modules\php\PHP_7.4 WP-CLI packages dir: WP-CLI cache dir: c:\openserver/.wp-cli/cache WP-CLI global config: WP-CLI project config: WP-CLI version: 2.7.1
Список команд
Полный список команд интерфейса:
Команда | Описание |
---|---|
wp admin | Открывает /wp-admin/ в браузере. |
wp cache | Добавляет, удаляет, формирует кеш. |
wp cap | Добавляет, удаляет, показывает список возможностей пользователей. |
wp cli | Посмотреть версию WP-CLI, проверить обновления. |
wp comment | Создавать, удалять, модерировать комментарии. |
wp config | Генерирует и выводит wp-config.php файл. |
wp core | Скачивает, устанавливает и обновляет движок. |
wp cron | Тестирование, запуск и удаление Cron событий. |
wp db | Операции с базой данных. |
wp dist-archive | Создает архив для дистрибуции |
wp embed | Просмотр oEmbed источников, очистка кеша. |
wp eval | Выполняет произвольный PHP код. |
wp eval-file | Загружает и выполняет PHP файл. |
wp export | Экспорт контента в WXR файл. |
wp find | Поиск установленных WP. |
wp help | Помощь по WP-CLI. |
wp i18n | Инструменты для перевода WP. |
wp import | Импорт контента из WXR файла. |
wp language | Установка, активация и просмотр языков. |
wp maintenance-mode | Активация и деактивация режима обслуживания. |
wp media | Импорт медиафайлов, пересоздание миниатюр, список зарегистрированных размеров. |
wp menu | Просмотр, создание, удаление меню. |
wp network | Операции по работе с сетью. |
wp option | Получение всех опций сайта. |
wp package | Просмотр, установка и удаление WP-CLI пакетов. |
wp plugin | Просмотр, установка, активация и удаление плагинов. |
wp post | Просмотр постов. |
wp post-type | Просмотр информации обо всех типах постов. |
wp profile | Работа с профилями |
wp rewrite | Список правил перенаправления, ЧПУ. |
wp role | Просмотр ролей пользователей. |
wp scaffold | Генератор кода для типов постов, таксономий, плагинов и т.д. |
wp search-replace | Правильный поиск и замена по базе данных. |
wp server | Запускает сервер для WP. |
wp shell | Открывает PHP консоль для тестирования кода. |
wp sidebar | Список сайдбаров. |
wp site | Работа с мультисайтом, создание, удаление и т.д. |
wp super-admin | Работа с юзерами в режиме мультисайта. |
wp taxonomy | Получение информации обо всех таксономиях. |
wp term | Просмотр и работа с элементами таксономий. |
wp theme | Просмотр, установка, активация и удаление тем. |
wp transient | Работа с временным кешем Transient. |
wp user | Работа с пользователями. |
wp widget | Работа с виджетами. |
Как написать php обработчик команды
Как написать обработчик подробно написано в оф. документации к WP CLI https://wp-cli.org/#extending
Я приведу свой пример, для наглядности:
class MY_CLI { /** Регистрация хука **/ public static function add_action(){ add_action( 'cli_init', [self::class, 'register_command'], 10, 1); } /** Регистрация консольной команды **/ public static function register_command(){ \WP_CLI::add_command( 'woo2iiko', new self()); } /** * Получаем инстанс плагина, содержащего данные о версии **/ public function __construct(){ $this->plugin = WP_Plugin::getInstance(); } /** * Print a plugin version * * @example wp woo2iiko version * @return void */ public function version(){ \WP_CLI::log( $this->plugin->version ); } } // Вызов MY_CLI::add_action();
Результат
PS C:\OpenServer\domains\woocommerce.loc> wp woo2iiko version 1.0.4.5