wp-lessons.ru wordpress WP-Lessons

Как использовать WP-CLI для массового изменения статусов заказов WooCommerce

Диагностика проблемы: когда нужно массово менять статусы заказов в WooCommerce

В крупных интернет-магазинах на WooCommerce часто возникает необходимость быстро изменить статусы множества заказов. Например, нужно перевести заказы из статуса «в ожидании» в «обработан» после массовой проверки оплаты или отменить все заказы с просроченной оплатой. Стандартный админ-интерфейс WooCommerce не позволяет эффективно решить такие задачи, особенно при большом количестве заказов.

Почему WP-CLI — оптимальный инструмент для массового обновления заказов

WP-CLI — это командная строка WordPress, позволяющая выполнять операции быстро и без нагрузки на интерфейс. С его помощью можно:

  • Обрабатывать тысячи заказов за секунды.
  • Автоматизировать задачи через скрипты.
  • Избежать ошибок из-за ручной работы.

WP-CLI встроен в большинство хостингов и легко устанавливается отдельно.

Пошаговое решение: массовое изменение статусов заказов WooCommerce с помощью WP-CLI

1. Проверка доступа к WP-CLI

Подключитесь по SSH к серверу и выполните команду:

wp --info

Если отображается информация о версии, WP-CLI доступен.

2. Получение списка заказов для изменения

Для примера выберем заказы со статусом on-hold (ожидают оплаты). Сначала выведем их ID:

wp post list --post_type=shop_order --post_status=on-hold --field=ID --format=csv

Эта команда выведет список ID заказов с данным статусом.

3. Массовое обновление статусов заказов

Используем команду wp post update в цикле bash для смены статуса на processing (обрабатывается):

for order_id in $(wp post list --post_type=shop_order --post_status=on-hold --field=ID); do
  wp post update $order_id --post_status=wc-processing
  echo "Updated order $order_id to processing"
done

Обратите внимание, что статусы заказов WooCommerce имеют префикс wc-.

4. Использование WP-CLI плагина WooCommerce для удобства

Если установлен плагин woocommerce-cli, можно использовать команду wp wc order update для обновления заказов с передачей данных JSON. Однако стандартный WP-CLI позволяет управлять статусами через wp post update.

Проверка результата после внедрения

Проверьте статус изменённых заказов командой:

wp post list --post_type=shop_order --post_status=wc-processing --field=ID --format=csv

Сравните количество и ID с ожидаемыми. Также можно зайти в админку WooCommerce и убедиться, что статусы обновились.

Частые ошибки и как их исправить

  • Неправильный статус заказа. Используйте правильный формат статуса с префиксом wc-. Например, wc-completed, wc-cancelled.
  • Отсутствие доступа к WP-CLI. Проверьте права пользователя и наличие WP-CLI на сервере.
  • Обновление не всех заказов. Убедитесь в правильности фильтра (post_status) и проверьте, что заказы действительно существуют с этим статусом.
  • Ошибка при выполнении цикла bash. Убедитесь, что команда запускается в bash-совместимой оболочке и нет проблем с правами.

Практические советы по безопасности и производительности

  • Перед массовым обновлением сделайте резервную копию базы данных.
  • Выполняйте операции в нерабочее время, чтобы минимизировать нагрузку на сервер.
  • Проверяйте корректность обновления на тестовой среде.
  • Используйте --skip-plugins и --skip-themes параметры WP-CLI для уменьшения числа активных функций во время выполнения команд, если это возможно.
  • Для очень больших магазинов разбивайте обновления на партии, чтобы избежать таймаутов.

Сравнение вариантов массового изменения статусов заказов

МетодПреимуществаНедостаткиРекомендуется для
Админка WooCommerceПростота, нет необходимости в серверном доступеМедленно, не подходит для большого количества заказовМаленькие магазины, единичные изменения
WP-CLIСкорость, автоматизация, обработка тысяч заказовТребует SSH доступа, базовые навыки командной строкиСредние и крупные магазины, регулярные массовые операции
Плагины массового редактированияГрафический интерфейс, дополнительные функции фильтрацииМогут нагружать сервер, платные решенияМагазины без доступа к WP-CLI, удобство GUI

Пример скрипта для массового изменения статуса заказов с условием

#!/bin/bash
# Изменить статус заказов 'on-hold' старше 30 дней на 'cancelled'

order_ids=$(wp post list --post_type=shop_order --post_status=on-hold --date_query_column=post_date --date_query_after='30 days ago' --field=ID)

for id in $order_ids; do
  wp post update $id --post_status=wc-cancelled
  echo "Order $id cancelled"
done

Этот скрипт отфильтрует заказы по дате и изменит их статус, что часто нужно для очистки просроченных заказов.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше