WooCommerce: не работает обновление статуса заказа через REST API — как исправить

Диагностика проблемы с обновлением статуса заказа через REST API

Если при попытке изменить статус заказа в WooCommerce через REST API обновление не происходит, необходимо последовательно проверить несколько ключевых моментов. Чаще всего причина кроется в правах доступа, неверных параметрах запроса или в конфликте с плагинами безопасности.

  • Проверить URL и версию REST API: должен использоваться правильный endpoint, например, /wp-json/wc/v3/orders/{order_id}.
  • Убедиться, что аутентификация выполнена корректно — ключи Consumer Key и Consumer Secret должны иметь права на редактирование заказов.
  • Проверить структуру запроса: статус заказа передается в поле status.
  • Оценить, не блокируют ли изменения плагины безопасности (например, Wordfence, iThemes Security) или кастомные фильтры в functions.php.

Пример неработающего запроса

PUT /wp-json/wc/v3/orders/12345
{
  "status": "completed"
}

При таком запросе API может возвращать 200 OK, но статус остаётся прежним.

Пошаговое решение проблемы

1. Проверка прав и аутентификации

Обязательно убедитесь, что пользователь, к которому привязаны ключи, имеет роль shop_manager или administrator. Для создания ключей с необходимыми правами:

  • В админке WordPress перейдите в WooCommerce → Настройки → Расширенные → REST API.
  • Создайте ключ с правами Read/Write.

2. Проверка правильности запроса

Корректный пример запроса на изменение статуса:

PUT https://example.com/wp-json/wc/v3/orders/12345
Authorization: Basic base64(consumer_key:consumer_secret)
Content-Type: application/json

{
  "status": "completed"
}

Обратите внимание: поле status должно содержать допустимые значения WooCommerce: pending, processing, on-hold, completed, cancelled, refunded, failed.

3. Отключение конфликтующих плагинов

Временно отключите плагины, которые могут влиять на обработку REST API:

  • Плагины безопасности (Wordfence, iThemes Security и прочие).
  • Кастомные плагины или функции, которые используют фильтры woocommerce_rest_pre_insert_shop_order или rest_pre_dispatch.

Если после отключения проблема исчезает — локализуйте конфликт, проверяя плагины по одному.

4. Логирование ошибок API

Добавьте в wp-config.php следующие строки для включения отладки REST API:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

Затем проверьте файл wp-content/debug.log на наличие ошибок, связанных с REST API и WooCommerce.

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

После внесения изменений повторите запрос и проверьте ответ API. Пример успешного ответа:

{
  "id": 12345,
  "status": "completed",
  "date_modified": "2024-06-10T12:34:56",
  ...
}

Дополнительно зайдите в административную панель WooCommerce → Заказы и убедитесь, что статус заказа действительно изменился.

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

  • Ошибка 401 Unauthorized — неверные или недостаточные права ключа. Проверьте роль пользователя и права ключа.
  • Обновление статуса не происходит, но API возвращает 200 — возможно, кастомный фильтр отменяет сохранение. Проверьте наличие фильтров на woocommerce_rest_pre_insert_shop_order.
  • Статус передан в неверном формате — используйте только допустимые значения статусов WooCommerce.
  • Проблемы с кэшированием — отключите все кэш-плагины и проверьте повторно.

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

  • Используйте HTTPS для всех REST API запросов, чтобы защитить ключи аутентификации.
  • Ограничьте IP-адреса, с которых разрешено использовать ключи, если это возможно.
  • Логируйте критичные ошибки API и проверяйте логи регулярно.
  • Для массового обновления статусов используйте пакетные запросы с ограниченной скоростью, чтобы не перегружать сервер.

Сравнение способов обновления статуса заказа

СпособПреимуществаНедостатки
REST APIУдобно для интеграций, стандартизовано, работает удалённоЗависит от правильных прав, может блокироваться плагинами безопасности
WP CLIБыстро, без ограничений HTTP, можно скриптоватьТребует SSH доступа, не подходит для внешних интеграций
Прямое изменение в базеМгновенноРиск повреждения данных, не рекомендуется
WooCommerce: автоматическое удаление отзывов после 30 дней
04.08.2026
Как избежать конфликтов плагинов в WordPress: практические решения и советы
15.12.2025
Как создать автоматический отчет о проблемах WordPress
27.01.2026
WooCommerce: автоматическое изменение цены при смене атрибутов товара
06.05.2026
WooCommerce: невозможно изменить складские запасы через админку — как исправить
17.04.2026