Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Команды WP-CLI

WP-CLI — консольная программа для управления WordPress. WooCommerce добавляет к ней группу команд wp wc: товары, заказы и покупателей можно читать и менять без панели. Это удобно для скриптов развёртывания, массовых операций и работы на сервере без браузера.

Первый запуск

Команды выполняют в папке сайта:

wp wc product list --user=1 --fields=id,name,price,stock_quantity

Команда печатает таблицу товаров с четырьмя столбцами. Параметр --user обязателен для всех команд wp wc: это идентификатор или логин пользователя с правами управления магазином, от имени которого выполняется операция.

Как устроены команды

Команды повторяют REST API: имя ресурса, затем действие.

ДействиеЧто делает
listСписок
get <id>Одна запись
createСоздание
update <id>Изменение
delete <id>Удаление
РесурсЧто это
productТовары
product_variationВариации
product_catКатегории
shop_orderЗаказы
customerПокупатели
shop_couponКупоны

Все параметры ресурса показывает справка: wp wc product create --help.

Товары

wp wc product create --name="Блюдце" --regular_price=4.50 --sku=SAUCER-001 --user=1
wp wc product update 12 --regular_price=12.90 --stock_quantity=20 --user=1
wp wc product get 12 --fields=id,name,price --user=1

Первая команда создаёт товар и печатает его идентификатор, вторая меняет цену и остаток, третья показывает результат. Параметры называются так же, как поля REST API.

Заказы

wp wc shop_order list --status=processing --fields=id,total,date_created --user=1
wp wc shop_order update 1024 --status=completed --user=1

Первая команда выводит оплаченные заказы, вторая переводит заказ 1024 в «Выполнен» — со всеми хуками и письмами, как при смене состояния в панели.

Формат вывода

wp wc product list --user=1 --format=json
wp wc product list --user=1 --format=ids
wp wc product list --user=1 --format=csv > products.csv

Кроме таблицы есть json, csv, ids и count. Формат ids удобно передавать в другую команду, csv — сохранять в файл.

Служебные команды

КомандаЧто делает
wp wc updateОбновляет таблицы базы после обновления плагина
wp wc tool list --user=1Список инструментов со страницы «Статус → Инструменты»
wp wc tool run clear_transients --user=1Очищает кеш WooCommerce
wp wc hpos statusСостояние хранилища заказов HPOS
wp action-scheduler runВыполняет очередь фоновых задач

Собственная команда

Плагин может добавить свою команду. Создайте файл includes/cli.php и подключите его в acme-shop.php:

// wp-content/plugins/acme-shop/includes/cli.php
if (defined('WP_CLI') && WP_CLI) {
    WP_CLI::add_command('acme low-stock', function () {
        $products = wc_get_products(['manage_stock' => true, 'limit' => 100]);
 
        foreach ($products as $product) {
            if ($product->get_stock_quantity() < 5) {
                WP_CLI::line($product->get_id() . ' ' . $product->get_name() . ': ' . $product->get_stock_quantity());
            }
        }
 
        WP_CLI::success('Готово.');
    });
}

Проверка WP_CLI не даёт коду выполняться при обычных запросах сайта. Запустите wp acme low-stock — команда напечатает товары, которых осталось меньше пяти.

Частая ошибка

Команду запускают без --user и получают ошибку о недостатке прав: «Sorry, you cannot list resources». Команды wp wc проходят те же проверки прав, что и REST API, а консоль по умолчанию работает без пользователя. Добавляйте --user=1 или логин администратора к каждой команде.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.