Предыстория
Нужно было написать поддержку 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
