Автоматическое обновление статуса заказа WooCommerce по оплате через код

Диагностика проблемы: почему статус заказа не меняется после оплаты

Частая ситуация в WooCommerce — после успешной оплаты заказ остается в статусе on-hold или pending. Это может привести к задержкам в обработке заказов и недовольству клиентов. Основные причины:

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

Чтобы убедиться в проблеме, можно проверить статус заказа в админке WooCommerce до и после оплаты, а также логи платежного шлюза (если есть).

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

1. Проверяем, какое событие срабатывает после оплаты

В WooCommerce для разных платежных шлюзов есть свои хуки, например, woocommerce_payment_complete. Он вызывается, когда платеж подтверждён.

2. Добавляем обработчик изменения статуса через functions.php или плагин

add_action('woocommerce_payment_complete', 'custom_update_order_status_after_payment');
function custom_update_order_status_after_payment($order_id) {
    if (!$order_id) {
        return;
    }
    $order = wc_get_order($order_id);
    // Проверяем, что заказ в статусе ожидания платежа или обработке
    if ($order->get_status() === 'pending' || $order->get_status() === 'on-hold') {
        // Обновляем статус на 'processing' или 'completed' в зависимости от типа товара
        if ($order->has_downloadable_item()) {
            $order->update_status('completed');
        } else {
            $order->update_status('processing');
        }
    }
}

3. Альтернативный вариант: использовать вебхук платежной системы

Если платежный шлюз поддерживает вебхуки, лучше на их стороне настроить отправку уведомлений, а на сайте — принимать их и менять статус заказа. Но это требует отдельной настройки и проверки.

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

  • Создайте тестовый заказ с разными способами оплаты;
  • Совершите оплату и проверьте, поменялся ли статус заказа на processing или completed;
  • Проверьте логи WooCommerce и логи сервера на наличие ошибок;
  • Если вы используете кэширование, очистите кэш перед проверкой.

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

  • Хук не срабатывает: Убедитесь, что имя хука написано правильно и что плагин/тема не отключает этот хук.
  • Статус не обновляется: Проверьте, есть ли у пользователя права на изменение заказа и нет ли конфликтов с другими плагинами.
  • Заказ сразу переводится в completed, но это неверно: Скорректируйте логику в функции, чтобы статус менялся правильно для разных типов товаров.

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

  • Добавляйте проверки в код, чтобы исключить обновление статуса для уже завершённых заказов.
  • Используйте кеширование данных заказов с осторожностью, чтобы не показывать устаревший статус.
  • Храните кастомные функции в собственном плагине, чтобы не потерять их при обновлении темы.
  • Регулярно проверяйте совместимость с обновлениями WooCommerce и платежных шлюзов.

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

МетодПлюсыМинусыКогда использовать
Хук woocommerce_payment_complete Просто добавить код, срабатывает сразу после оплаты Не работает для всех шлюзов, может конфликтовать с плагинами Для большинства стандартных платежных систем
Вебхуки платежного шлюза Надёжно, работает при любых условиях, не зависит от клиента Сложнее настроить, требует обработки запросов и безопасности Если нужен полный контроль и интеграция с внешними системами
WooCommerce: как разрешить или запретить возврат товаров по ролям пользователей
19.04.2026
Как удалить все посты и страницы в WordPress быстро и безопасно
27.11.2025
WooCommerce: автоматическое удаление неоплаченных заказов с подробной настройкой
25.05.2026
Автоматическое создание резервной копии WordPress: лучшие плагины и кодовые решения
18.11.2025
Как отключить открытый REST API в WordPress без плагинов
28.02.2026
×

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

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

пишет статьи

готовит SEO

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

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