WooCommerce: почему не создаётся заказ и как это исправить

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

При оформлении заказа в WooCommerce пользователь может столкнуться с ситуацией, когда после нажатия кнопки «Оформить заказ» страница перезагружается, но заказ не появляется в админке, а клиенту не приходит уведомление. Такой баг часто встречается при кастомизации сайта или после обновления плагинов и тем.

Основные симптомы:

  • Отсутствие новых заказов в разделе WooCommerce → Заказы;
  • Отсутствие писем с подтверждением клиенту и администратору;
  • Отсутствие ошибок на фронтенде, но заказ не создаётся;
  • В логах сервера и WooCommerce могут отсутствовать явные ошибки.

Основные причины проблемы

  • Конфликты с плагинами или темой, которые изменяют процесс оформления заказа;
  • Проблемы с PHP-сессиями или cookie, мешающие корректной работе корзины;
  • Ошибки в коде, добавленном через хуки (например, woocommerce_checkout_process, woocommerce_checkout_order_processed);
  • Проблемы с базой данных: блокировки или отсутствие прав на вставку записей;
  • Некорректная работа метода оплаты, который не возвращает ожидаемый результат;
  • Ошибки в настройках REST API или AJAX вызовов, отвечающих за оформление.

Пошаговое решение

1. Включение режима отладки WooCommerce и WP

Добавьте в wp-config.php следующие строки, чтобы включить отображение ошибок и логирование:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false); // ошибки пишутся в wp-content/debug.log

В настройках WooCommerce перейдите в WooCommerce → Статус → Логи и откройте последние логи ошибок оформления заказа.

2. Отключение конфликтующих плагинов и смена темы

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

Активируйте стандартную тему WordPress (например, Twenty Twenty-Three) для проверки проблемы с темой.

3. Проверка кода в functions.php и кастомных плагинах

Ищите хуки, которые могут прерывать процесс оформления заказа. Например, неправильное использование wp_die() или отсутствие возврата значения в фильтрах.

Пример корректного добавления проверки валидности на этапе оформления:

add_action('woocommerce_checkout_process', function() {
    if (empty($_POST['billing_phone'])) {
        wc_add_notice('Пожалуйста, укажите телефон.', 'error');
    }
});

4. Проверка настроек методов оплаты

Некорректная интеграция с платежным шлюзом может блокировать создание заказа. Временно отключите сторонние платежные методы и проверьте работу с базовыми (например, "Оплата при доставке").

5. Очистка сессий и кэша

Иногда в сессиях WooCommerce сохраняются некорректные данные, мешающие оформлению. Добавьте код для очистки сессии пользователя:

add_action('init', function() {
    if (is_user_logged_in()) {
        WC()->session->cleanup_session();
    }
});

Также очистите кэш сайта и браузера.

Как проверить, что проблема решена

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

Частые ошибки и способы их устранения

Ошибка 1: Отсутствие прав записи в базу данных

Проверьте, не включено ли ограничение прав в MySQL, и что пользователь базы данных имеет права на INSERT в таблицы WooCommerce.

Ошибка 2: Конфликт сторонних скриптов JavaScript

Откройте консоль браузера (F12 → Console) и проверьте наличие JS-ошибок, блокирующих отправку формы оформления заказа.

Ошибка 3: Некорректное использование хуков

Если в коде есть хуки, которые прерывают процесс без вызова wc_add_notice() или без правильного возврата, это может привести к молчаливому провалу оформления.

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

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

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

СпособПлюсыМинусыКогда применять
Отключение конфликтующих плагиновБыстро выявляет источник проблемыМожет повлиять на функцию сайтаПри подозрении на конфликт плагинов
Исправление кастомного кодаУстраняет ошибку без потери функционалаТребует навыков PHP и WooCommerceПри наличии кастомных решений
Смена темы на стандартнуюПроверяет влияние темыВременное решение, меняет внешний видПри подозрении на тему
Использование стандартных методов оплатыИсключает проблемы с платежамиОграничивает функционалПри проблемах с платежными шлюзами
Как использовать WP-Cron для автоматизации задач в WordPress: практические примеры
25.04.2026
Автоматическое удаление товаров в WooCommerce по сроку годности или дате публикации
20.06.2026
Как создать уникальный тип записи в WordPress с подключением метабоксов
04.01.2026
Как удалить вредоносные плагины в WordPress
18.11.2025
Как создать автоматический sitemap в WordPress без плагинов
06.12.2025