Краткий ответ: если WooCommerce не оформляет заказ, проблема чаще всего находится в checkout-странице, оплате, доставке, кешировании, JavaScript, AJAX-запросе wc-ajax=checkout, сессиях, cookies, теме или конфликте плагинов. Исправлять нужно не “наугад”, а по симптомам: кнопка не нажимается, бесконечная загрузка, ошибка оплаты, пустой checkout, не создаётся заказ или не открывается страница “Заказ принят”.
Оформление заказа в WooCommerce зависит сразу от нескольких частей сайта. Если ломается хотя бы одна из них, покупатель может заполнить форму, нажать кнопку оформления и не получить заказ.
Чаще всего проблема выглядит так:
В реальных проектах чаще всего виноваты не сами настройки WooCommerce, а конфликт: кеш плагина, оптимизация JavaScript, платёжный модуль, тема, кастомный код, устаревший шаблон checkout или проблема на стороне хостинга.
Сначала нужно понять, на каком этапе ломается оформление заказа. Это экономит время и не даёт сломать рабочие части магазина.
| Симптом | Вероятная причина | Что проверить |
|---|---|---|
| Кнопка оформления не нажимается | JavaScript-ошибка, конфликт темы, оптимизация JS | Console в браузере, отключение defer/delay JS |
| Бесконечная загрузка после клика | Ошибка AJAX, PHP fatal error, проблема оплаты | Network, debug.log, WooCommerce Logs |
| Нет способов оплаты | SSL, валюта, страна, настройки платёжного шлюза | WooCommerce → Настройки → Платежи |
| Нет доставки | Зоны доставки, методы, адрес покупателя | WooCommerce → Настройки → Доставка |
| Заказ создаётся, но статус не меняется | Webhook платёжной системы, кеш, callback URL | Логи Stripe/PayPal/LiqPay/WayForPay |
| После оплаты нет письма | SMTP, wp_mail, статус заказа | Почтовые логи и SMTP |
| Checkout пустой | Неверная страница checkout или блок/шорткод | WooCommerce → Настройки → Дополнительно |
Если проблема связана не только с checkout, а весь магазин работает медленно, отдельно проверьте причины в статье WooCommerce долго оформляет заказ.
Если не хотите рисковать сайтом и тратить время на эксперименты, можно оставить заявку. Я посмотрю задачу и предложу аккуратное решение.
Начинать нужно с простых проверок, которые не меняют логику магазина.
Откройте WooCommerce → Настройки → Дополнительно и проверьте, какая страница выбрана как checkout.
На странице оформления должен быть один из вариантов:
[woocommerce_checkout].Не должно быть ситуации, когда корзина, checkout и личный кабинет назначены на одну и ту же страницу. Это ломает редиректы, endpoints и работу платёжных шлюзов.
Страницы корзины, оформления заказа и личного кабинета нельзя кешировать как обычные страницы. Там работают сессии, cookies, AJAX и индивидуальные данные покупателя.
В кеш-плагине и CDN нужно исключить:
/cart//checkout//my-account/?wc-ajax=checkout?wc-ajax=update_order_reviewЕсли кеш настроен неправильно, WooCommerce может показывать устаревшие данные корзины, не пересчитывать доставку или возвращать HTML там, где платёжный шлюз ожидает технический ответ.
Многие поломки появляются после включения функций:
Для checkout лучше не оптимизировать скрипты WooCommerce, платёжного шлюза и темы, если вы точно не проверили оформление тестового заказа.
Если кнопка оформления работает, но заказ не завершается, проверьте платёжный метод.
Что проверить:
Для теста можно временно включить стандартный способ оплаты Оплата при доставке. Если с ним заказ создаётся, значит проблема ближе к платёжному шлюзу, а не к checkout в целом.
WooCommerce может не дать оформить заказ, если для адреса покупателя нет доступного способа доставки.
Проверьте:
Если поле стало обязательным, но не выводится на странице, заказ не будет оформлен. Такое часто бывает после доработки checkout-полей или установки плагинов Checkout Field Editor.
Проверьте, нет ли обязательных полей, которые:
Если нужно менять checkout, лучше делать это через дочернюю тему или отдельный небольшой плагин. Для сложных правок можно использовать услугу доработка WooCommerce, особенно если затронуты оплата, доставка, статусы заказов или интеграции.
Важно: код ниже предназначен для диагностики. Не оставляйте включённый debug на рабочем сайте надолго. Перед изменениями сделайте резервную копию файлов и базы данных.
Куда вставлять: файл wp-config.php, выше строки /* That's all, stop editing! */.
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
define( 'SCRIPT_DEBUG', true );
@ini_set( 'display_errors', 0 );
После повторения ошибки проверьте файл:
/wp-content/debug.log
Ищите ошибки, связанные с:
WC_CheckoutWC_AJAXprocess_checkoutpayment gatewayfatal erroruncaught errorsessionКуда вставлять: в отдельный мини-плагин или functions.php дочерней темы. Лучше использовать отдельный плагин, чтобы код не пропал при смене темы.
add_action( 'woocommerce_before_checkout_process', 'sc_log_before_checkout_process' );
function sc_log_before_checkout_process() {
if ( ! function_exists( 'wc_get_logger' ) ) {
return;
}
$logger = wc_get_logger();
$logger->info(
'Checkout process started. User ID: ' . get_current_user_id(),
array(
'source' => 'sc-checkout-debug',
)
);
}
После теста откройте WooCommerce → Статус → Журналы и выберите лог sc-checkout-debug. Если запись появляется после клика по кнопке, значит запрос до WooCommerce доходит. Если записи нет, проблема может быть в JavaScript, кешировании, блокировке AJAX или WAF.
Откройте checkout, нажмите F12 → Network, затем оформите тестовый заказ.
Нужно найти запрос:
?wc-ajax=checkout
Проверьте:
После правильной диагностики должно быть понятно, где именно ломается оформление заказа: на frontend, в AJAX, на PHP, в оплате, доставке, сессиях или после оплаты.
Рабочий результат выглядит так:
Если заказы создаются, но письма не приходят, проблема уже не в checkout. Тогда нужно отдельно проверять SMTP и wp_mail. Подробно это разобрано в статье WooCommerce не отправляет письма.
Не стоит отключать плагины на рабочем магазине в момент продаж. Лучше сделать копию сайта на staging и повторить проблему там.
Порядок проверки:
Так можно найти конфликт без случайного отключения важной функции магазина.
Если тема содержит старые файлы WooCommerce templates, checkout может работать нестабильно после обновления WooCommerce.
Проверьте:
/wp-content/themes/your-theme/woocommerce/;Checkout может падать из-за ограничений сервера. Особенно если магазин использует тяжёлую тему, много плагинов доставки, CRM-интеграцию, Telegram-уведомления и платёжные шлюзы.
Проверьте:
memory_limit;max_execution_time;Если запрос ?wc-ajax=checkout получает 403, проблема может быть не в WooCommerce. Его может блокировать firewall, Cloudflare, ModSecurity или security-плагин.
Признаки:
Очистка кеша может временно помочь, но не исправляет причину. Если checkout снова ломается через несколько часов, нужно искать конфликт кеширования, JS-оптимизации или сессий.
Так можно остановить оплату, доставку, CRM, аналитику, письма и интеграции. Безопаснее делать проверку на staging-копии.
Если кнопка “Оформить заказ” не реагирует, Console и Network часто показывают причину быстрее, чем логи WooCommerce.
Stripe, PayPal, LiqPay, WayForPay и другие шлюзы могут отклонять платёж на своей стороне. Иногда WooCommerce показывает общую ошибку, а реальная причина видна только в кабинете платёжной системы.
Если callback или webhook попадает в кеш, платёж может пройти, но WooCommerce не получит корректный ответ. В итоге заказ останется в неправильном статусе.
?wc-ajax=checkout.debug.log.Чаще всего кнопку блокирует JavaScript-ошибка, кеш, конфликт плагинов, проблема платёжного шлюза или ошибка AJAX-запроса wc-ajax=checkout. Начните с проверки Console и Network в браузере.
Бесконечная загрузка обычно означает, что WooCommerce отправил запрос, но не получил корректный ответ. Причина может быть в PHP-ошибке, блокировке firewall, платёжном модуле, кешировании или неправильном JSON-ответе.
Проверьте, включены ли платёжные методы, поддерживают ли они валюту магазина, страну покупателя и SSL. Также проверьте, не скрывает ли их кастомный код или плагин условий оплаты.
Обычно причина в зонах доставки. Адрес покупателя не попадает ни в одну зону, метод доставки выключен или плагин доставки возвращает ошибку.
Можно для теста, но это не лучшее постоянное решение. Правильнее исключить из кеша корзину, checkout, личный кабинет, AJAX-запросы WooCommerce и webhook URL платёжных систем.
Не сразу. Сначала проверьте ошибку в Console, Network и debug.log. Переключение на стандартную тему нужно для диагностики на staging-копии, чтобы понять, виновата тема или нет.
Это уже проблема почты, а не самого оформления заказа. Проверьте SMTP, DNS-записи SPF/DKIM/DMARC, статус заказа и настройки WooCommerce Email.
Причина может быть в endpoints, постоянных ссылках, редиректах, кеше или шаблоне темы. Сохраните настройки постоянных ссылок, проверьте WooCommerce endpoints и исключите страницу order-received из кеша.
Если WooCommerce не оформляет заказ, нельзя ограничиваться очисткой кеша или случайным отключением плагинов. Checkout — это связка страницы, AJAX, сессий, доставки, оплаты, темы, PHP и сервера. Правильный путь: определить симптом, проверить Console и Network, включить debug.log, посмотреть WooCommerce Logs, протестировать оплату и доставку, затем уже исправлять конкретную причину.
В большинстве случаев проблему можно найти за один цикл диагностики: тестовый заказ, проверка wc-ajax=checkout, анализ логов и отключение конфликтующей оптимизации или плагина на staging-копии.
Об авторе