Автоматизация создания и обновления заказов через REST API в WordPress

Автоматизация работы с заказами — одна из ключевых задач для сайтов на WordPress, особенно если ваша система должна интегрироваться с внешними сервисами или мобильными приложениями. В этой статье разберём, как создавать и обновлять заказы через REST API WordPress, используя кастомные эндпоинты и примеры кода для быстрого запуска.

Почему REST API — эффективное решение для работы с заказами в WordPress

REST API позволяет обмениваться данными между WordPress и внешними системами по стандартному протоколу HTTP. Это значит, что можно создавать, обновлять, получать и удалять заказы из других приложений, не заходя в админку. Такой подход экономит время, уменьшает ошибки при ручном вводе и открывает возможности для интеграции с CRM, складскими системами и мобильными приложениями.

Кроме того, REST API легко расширяется, и при необходимости можно создавать свои собственные маршруты для работы с заказами, включая необходимые проверки и логику.

Для примера рассмотрим работу с заказами WooCommerce, так как это самая популярная платформа для интернет-магазинов на WordPress. Если у вас кастомная реализация заказов, принципы будут аналогичны.

Создание собственного REST API эндпоинта для создания заказов

Чтобы расширить стандартный REST API WooCommerce или WordPress, добавим собственный маршрут, который позволит создавать заказы с нужной бизнес-логикой. Вот простой пример добавления такого эндпоинта в файл functions.php вашей темы или в отдельный плагин:

add_action('rest_api_init', function () {
    register_rest_route('wporder/v1', '/create-order', array(
        'methods' => 'POST',
        'callback' => 'wporder_create_order',
        'permission_callback' => function () {
            return current_user_can('edit_posts');
        },
    ));
});

function wporder_create_order(WP_REST_Request $request) {
    $params = $request->get_json_params();
    if (empty($params['customer_id']) || empty($params['items'])) {
        return new WP_Error('missing_data', 'Необходимо передать customer_id и items', array('status' => 400));
    }

    $order = wc_create_order(array('customer_id' => $params['customer_id']));

    foreach ($params['items'] as $item) {
        if (empty($item['product_id']) || empty($item['quantity'])) {
            continue;
        }
        $order->add_product(wc_get_product($item['product_id']), $item['quantity']);
    }

    $order->calculate_totals();
    $order->save();

    return array('order_id' => $order->get_id(), 'status' => 'created');
}

В этом коде мы регистрируем маршрут wporder/v1/create-order, который принимает POST-запрос с JSON, содержащим ID клиента и массив товаров с их количеством. Создаётся заказ, добавляются товары, рассчитывается сумма и сохраняется заказ. В ответ возвращается ID созданного заказа и статус.

Обновление статусов заказов через REST API

Частая задача — менять статус заказа, например, после оплаты или обработки. Для этого создадим ещё один эндпоинт:

add_action('rest_api_init', function () {
    register_rest_route('wporder/v1', '/update-order-status/(?P<id>\d+)', array(
        'methods' => 'POST',
        'callback' => 'wporder_update_order_status',
        'permission_callback' => function () {
            return current_user_can('edit_posts');
        },
    ));
});

function wporder_update_order_status(WP_REST_Request $request) {
    $order_id = $request->get_param('id');
    $params = $request->get_json_params();

    if (empty($params['status'])) {
        return new WP_Error('missing_status', 'Необходимо указать статус', array('status' => 400));
    }

    $order = wc_get_order($order_id);
    if (!$order) {
        return new WP_Error('order_not_found', 'Заказ не найден', array('status' => 404));
    }

    $valid_statuses = wc_get_order_statuses();
    $new_status = sanitize_text_field($params['status']);
    $status_key = 'wc-' . str_replace('wc-', '', $new_status);

    if (!array_key_exists($status_key, $valid_statuses)) {
        return new WP_Error('invalid_status', 'Неверный статус заказа', array('status' => 400));
    }

    $order->update_status($status_key, 'Статус обновлён через REST API');
    return array('order_id' => $order_id, 'new_status' => $status_key, 'result' => 'success');
}

Этот эндпоинт принимает ID заказа в URL и новый статус в теле запроса. Статус проверяется на валидность, после чего обновляется. Таким образом можно интегрировать систему обновления заказов из внешних сервисов.

Безопасность и авторизация REST API запросов

При работе с заказами крайне важно обеспечить безопасность. В примерах выше для простоты используется проверка current_user_can('edit_posts'), но в реальных проектах рекомендуем использовать более надёжные методы:

  • Использовать OAuth 2.0 или JWT авторизацию для REST API.
  • Ограничивать доступ по IP, если возможно.
  • Внедрять nonce-токены и шифрование, если API доступен публично.
  • Логировать все запросы и ошибки для аудита.

Для WordPress существует много готовых плагинов для расширенной авторизации REST API, например, JWT Authentication for WP REST API.

Полезные плагины для работы с заказами и REST API

Помимо собственного кода, рекомендуем обратить внимание на следующие плагины, которые помогут автоматизировать и упростить работу с заказами:

  • WooCommerce REST API Manager — расширяет возможности стандартного API для работы с заказами и товарами.
  • Clearfy Pro — оптимизирует и защищает REST API, а также помогает убрать лишние запросы.
  • My Popup — можно использовать для уведомлений клиентов о статусах заказов.

Все эти плагины доступны на wpshop.ru.

Заключение: практические рекомендации по интеграции REST API заказов

При внедрении автоматизации через REST API придерживайтесь следующих правил:

  • Тестируйте API на тестовом стенде, чтобы избежать ошибок в работе магазина.
  • Используйте валидаторы данных, чтобы не допускать некорректные заказы.
  • Обратите внимание на обработку ошибок и отдавайте понятные сообщения клиенту.
  • Обеспечьте защиту API от несанкционированного доступа.

Автоматизация создания и обновления заказов через REST API позволяет значительно сэкономить время и снизить количество ошибок при интеграции с внешними системами, а также расширяет возможности вашего сайта.

WooCommerce: автоматическое отключение платёжных методов по расписанию
03.06.2026
Автоматическое создание отчёта по просмотрам и активности пользователей в WordPress
03.01.2026
WooCommerce: автоматическое удаление заказов по неоплаченному статусу
17.05.2026
Автоматическое отключение неиспользуемых платежных методов в WooCommerce по расписанию
06.05.2026
WooCommerce: решение проблемы с повторной обработкой платежей
09.06.2026