WooCommerce долго оформляет заказ

Автор:vkuzyomko

WooCommerce долго оформляет заказ

Краткий ответ: WooCommerce долго оформляет заказ чаще всего из-за медленного запроса wc-ajax=checkout, платёжного шлюза, расчёта доставки, внешнего API, SMTP-отправки писем, тяжёлых плагинов, медленной базы данных, слабого хостинга, PHP-ошибок, блокировки checkout кешем или кастомного кода на хуках оформления заказа.

Если покупатель нажимает “Оформить заказ”, кнопка долго крутится, заказ создаётся через 10–30 секунд или checkout заканчивается ошибкой 504, нужно смотреть не только скорость страницы. Самая важная часть — серверная обработка заказа после клика: валидация полей, создание заказа, расчёт доставки, оплата, списание склада, купоны, письма, webhooks, CRM, Telegram, аналитика и сторонние интеграции.

Причина

Страница checkout может открываться быстро, но сам заказ оформляться долго. Это разные вещи. Открытие страницы зависит от темы, CSS, JS, кеша и изображений. А оформление заказа зависит от PHP, WooCommerce hooks, базы данных, платёжного шлюза, доставки, email и внешних сервисов.

На практике задержку часто создаёт не WooCommerce сам по себе, а код, который запускается во время оформления заказа.

  • платёжный плагин долго ждёт ответ банка или API;
  • служба доставки рассчитывает стоимость через внешний API;
  • SMTP долго отправляет письмо после создания заказа;
  • CRM-интеграция синхронно отправляет заказ и задерживает checkout;
  • плагин Telegram-уведомлений ждёт ответ Telegram API;
  • плагин аналитики, бонусов или складского учёта делает долгий запрос;
  • кастомный код в functions.php выполняет тяжёлые действия на checkout hooks;
  • база данных перегружена старыми заказами, мета-данными, сессиями и autoload options;
  • PHP memory limit слишком мал для текущей нагрузки;
  • на checkout подключены лишние плагины и скрипты;
  • кеш неправильно работает с Cart, Checkout или WooCommerce sessions;
  • после оплаты заказ остаётся в “Pending payment” и процесс не завершается нормально.

Если заказ вообще не создаётся или кнопка “Place order” зависает без результата, это уже ближе к проблеме WooCommerce не оформляет заказ. Если заказ создаётся, но письма приходят с задержкой или не приходят совсем, отдельно стоит проверить, почему WooCommerce не отправляет письма.

Что именно может тормозить checkout

Участок Что происходит Почему может быть медленно
wc-ajax=update_order_review Пересчёт доставки, налогов, купонов и итогов Медленная доставка, геолокация, купоны, тяжёлые хуки
wc-ajax=checkout Финальное оформление заказа Оплата, создание заказа, письма, API, CRM, webhooks
Платёжный шлюз Проверка оплаты или редирект Медленный API банка, callback, webhook, 3DS
Доставка Расчёт стоимости и доступных методов Внешний API, много зон, тяжёлые условия
Email Отправка писем клиенту и администратору Медленный SMTP, DNS, вложения, кастомные шаблоны
CRM/API Передача заказа во внешнюю систему Синхронный запрос, таймаут, повторные попытки
Склад Списание остатков, проверка наличия Много вариаций, внешняя система, тяжёлые запросы
База данных Запись заказа, order meta, сессии, transients Большие таблицы, нет оптимизации, медленный MySQL
Кастомный код Действия на checkout hooks Циклы, API-запросы, генерация PDF, тяжёлые отчёты

Диагностика

Главная задача диагностики — понять, какой запрос тормозит: загрузка страницы checkout, пересчёт заказа или финальная отправка формы.

Проверка в браузере

  • откройте checkout в режиме инкогнито;
  • откройте DevTools → Network;
  • нажмите “Оформить заказ”;
  • найдите запрос ?wc-ajax=checkout;
  • посмотрите время ожидания, статус ответа и Response;
  • если тормозит пересчёт доставки — найдите ?wc-ajax=update_order_review;
  • если ответ 500 — смотрите debug.log;
  • если ответ 504 — сервер или внешний API не успел завершить обработку;
  • если ответ быстрый, но интерфейс зависает — смотрите JavaScript.

Что проверить в WooCommerce

  • WooCommerce → Status — системные предупреждения;
  • WooCommerce → Status → Logs — ошибки оплаты, доставки, webhooks;
  • WooCommerce → Settings → Payments — активные платёжные методы;
  • WooCommerce → Settings → Shipping — зоны и методы доставки;
  • WooCommerce → Settings → Emails — не создают ли письма задержку;
  • WooCommerce → Orders — создаётся ли заказ сразу или с задержкой;
  • WooCommerce → Status → Scheduled Actions — нет ли зависших задач;
  • WooCommerce → Status → Templates — нет ли устаревших шаблонов темы.

Что проверить на сервере

  • PHP version;
  • PHP memory_limit;
  • max_execution_time;
  • slow PHP logs;
  • MySQL slow query log;
  • debug.log;
  • ошибки 500/502/504 в логах сервера;
  • нагрузку CPU/RAM во время оформления заказа;
  • скорость внешних API-запросов;
  • работу object cache, если он включён.

Как отличить медленный checkout от медленного сайта

Ситуация Где искать причину Комментарий
Весь сайт медленный Хостинг, тема, плагины, база, кеш Это общая оптимизация WordPress/WooCommerce
Checkout открывается медленно Скрипты, поля, доставка, плагины checkout Проверять загрузку страницы и update_order_review
После клика “Оформить заказ” долго думает wc-ajax=checkout, оплата, письма, API Проверять серверную обработку заказа
Заказ создаётся, но ответ долго не возвращается Письма, webhooks, CRM, Telegram, платёжный шлюз Часть действий нужно выносить в фон
Заказ не создаётся и ошибка 500 PHP fatal error Смотреть debug.log
Ошибка 504 после ожидания Таймаут сервера или внешнего API Нужно искать долгий процесс

Нужно быстро решить проблему на сайте?

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

Оставить заявку

Решение

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

1. Найти медленный AJAX-запрос

Если медленный запрос — wc-ajax=update_order_review, проблема часто в доставке, налогах, купонах или пересчёте итогов. Если медленный запрос — wc-ajax=checkout, проблема чаще в финальной обработке заказа: оплата, письма, webhooks, CRM, склад, кастомные hooks.

2. Проверить платёжный шлюз

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

  • временно протестируйте заказ с Cash on delivery или другим простым методом на staging;
  • проверьте логи платёжного плагина;
  • проверьте callback/webhook URL;
  • проверьте, меняется ли статус заказа после оплаты;
  • проверьте, нет ли повторных запросов к API;
  • проверьте, не ждёт ли checkout ответ, который можно обработать позже.

3. Проверить доставку

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

  • временно отключите внешние методы доставки на тестовой копии;
  • оставьте один простой flat rate метод;
  • проверьте скорость update_order_review;
  • проверьте геолокацию WooCommerce;
  • проверьте количество shipping zones;
  • проверьте условия бесплатной доставки и купонов;
  • проверьте API службы доставки.

4. Не отправлять тяжёлые внешние запросы прямо в checkout

Если во время оформления заказа сайт отправляет данные в CRM, Telegram, Google Sheets, складскую систему или ERP, это может задерживать покупателя. Лучше сначала создать заказ, а тяжёлую синхронизацию выполнять через Action Scheduler, cron или очередь.

Для магазинов с CRM особенно важно не делать долгий API-запрос до ответа пользователю. Логика похожа на интеграцию WordPress с CRM/API, но для checkout нужно добавлять очередь и повторные попытки.

5. Проверить email и SMTP

WooCommerce может отправлять письма сразу после создания заказа. Если SMTP отвечает медленно, checkout может выглядеть зависшим.

  • проверьте SMTP logs;
  • проверьте, сколько писем отправляется после заказа;
  • проверьте кастомные email-шаблоны;
  • проверьте вложения в письмах;
  • проверьте, не генерируется ли PDF-счёт во время checkout;
  • проверьте, не отправляются ли письма через медленный внешний сервис.

6. Убрать лишние плагины со страницы checkout

На checkout часто подключаются скрипты и хуки плагинов, которые там не нужны: слайдеры, popups, аналитика, виджеты, формы, рекомендации, чаты, upsell-блоки, тяжёлые конструкторы.

  • отключите лишние скрипты только на checkout;
  • не отключайте WooCommerce scripts;
  • проверьте плагины popups и tracking;
  • проверьте плагины checkout fields;
  • проверьте плагины бонусов и скидок;
  • проверьте плагины abandoned cart;
  • проверьте плагины invoice/PDF.

7. Проверить базу данных

Медленная база может тормозить создание заказа, запись order meta, проверку купонов, сессии и обновление остатков.

  • проверьте размер wp_postmeta или HPOS-таблиц заказов;
  • проверьте wp_options autoload;
  • очистите просроченные transients после бэкапа;
  • проверьте WooCommerce sessions;
  • проверьте Action Scheduler с зависшими задачами;
  • проверьте медленные SQL-запросы;
  • рассмотрите HPOS, если магазин большой и совместимость плагинов проверена.

Если медленный не только checkout, а весь магазин, полезно провести общую диагностику по статье как ускорить WooCommerce.

Код

Важно: код ниже предназначен для диагностики. Не вставляйте все сниппеты сразу на рабочий магазин. Сначала сделайте бэкап и проверьте на staging-копии. Ошибки в checkout hooks могут повлиять на оплату, создание заказа, письма, сессии и статусы заказов.

1. Включить debug.log

Куда вставлять: в файл wp-config.php перед строкой /* That’s all, stop editing! */.

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

2. Логировать время выполнения wc-ajax=checkout

Куда вставлять: во временный служебный плагин или в functions.php дочерней темы только на время диагностики.

<?php
if (!defined('ABSPATH')) {
    exit;
}

add_action('init', 'sc_checkout_time_start');

function sc_checkout_time_start() {
    if (empty($_GET['wc-ajax'])) {
        return;
    }

    $wc_ajax = sanitize_text_field($_GET['wc-ajax']);

    if ($wc_ajax !== 'checkout' && $wc_ajax !== 'update_order_review') {
        return;
    }

    $GLOBALS['sc_wc_ajax_start_time'] = microtime(true);
    $GLOBALS['sc_wc_ajax_action'] = $wc_ajax;

    add_action('shutdown', 'sc_checkout_time_finish');
}

function sc_checkout_time_finish() {
    if (empty($GLOBALS['sc_wc_ajax_start_time']) || empty($GLOBALS['sc_wc_ajax_action'])) {
        return;
    }

    $duration = microtime(true) - $GLOBALS['sc_wc_ajax_start_time'];

    error_log('================ SC WC AJAX TIME ================');
    error_log('Action: ' . $GLOBALS['sc_wc_ajax_action']);
    error_log('Duration: ' . round($duration, 4) . ' sec');
    error_log('Memory usage: ' . size_format(memory_get_peak_usage(true)));
    error_log('Request URI: ' . (isset($_SERVER['REQUEST_URI']) ? sanitize_text_field($_SERVER['REQUEST_URI']) : ''));
    error_log('=================================================');
}

3. Логировать этапы оформления заказа

Этот код помогает понять, доходит ли процесс до создания заказа и оплаты.

<?php
add_action('woocommerce_before_checkout_process', 'sc_log_before_checkout_process');

function sc_log_before_checkout_process() {
    error_log('SC CHECKOUT STEP: before_checkout_process');
}

add_action('woocommerce_checkout_process', 'sc_log_checkout_process');

function sc_log_checkout_process() {
    error_log('SC CHECKOUT STEP: checkout_process');
}

add_action('woocommerce_checkout_order_processed', 'sc_log_checkout_order_processed', 10, 3);

function sc_log_checkout_order_processed($order_id, $posted_data, $order) {
    error_log('SC CHECKOUT STEP: order_processed. Order ID: ' . (int) $order_id);
}

add_action('woocommerce_payment_complete', 'sc_log_payment_complete');

function sc_log_payment_complete($order_id) {
    error_log('SC CHECKOUT STEP: payment_complete. Order ID: ' . (int) $order_id);
}

add_action('woocommerce_thankyou', 'sc_log_thankyou');

function sc_log_thankyou($order_id) {
    error_log('SC CHECKOUT STEP: thankyou. Order ID: ' . (int) $order_id);
}

4. Найти медленные внешние HTTP-запросы во время checkout

Важно: этот код может писать много строк в лог. Используйте временно и только для диагностики.

<?php
add_filter('pre_http_request', 'sc_http_request_start_log', 10, 3);

function sc_http_request_start_log($preempt, $parsed_args, $url) {
    if (!sc_is_checkout_ajax_request()) {
        return $preempt;
    }

    error_log('SC HTTP REQUEST START: ' . esc_url_raw($url));

    return $preempt;
}

add_filter('http_response', 'sc_http_request_response_log', 10, 3);

function sc_http_request_response_log($response, $parsed_args, $url) {
    if (!sc_is_checkout_ajax_request()) {
        return $response;
    }

    $code = wp_remote_retrieve_response_code($response);

    error_log('SC HTTP REQUEST END: ' . esc_url_raw($url) . ' | CODE: ' . $code);

    return $response;
}

function sc_is_checkout_ajax_request() {
    if (empty($_GET['wc-ajax'])) {
        return false;
    }

    $wc_ajax = sanitize_text_field($_GET['wc-ajax']);

    return $wc_ajax === 'checkout' || $wc_ajax === 'update_order_review';
}

5. Проверить количество элементов в корзине и выбранный метод оплаты

Куда вставлять: временно в служебный плагин или functions.php дочерней темы.

<?php
add_action('woocommerce_before_checkout_process', 'sc_log_checkout_cart_info');

function sc_log_checkout_cart_info() {
    if (!function_exists('WC') || !WC()->cart) {
        error_log('SC CHECKOUT CART: WC cart not available');
        return;
    }

    $payment_method = isset($_POST['payment_method']) ? sanitize_text_field($_POST['payment_method']) : '';

    error_log('SC CHECKOUT CART ITEMS: ' . WC()->cart->get_cart_contents_count());
    error_log('SC CHECKOUT CART TOTAL: ' . WC()->cart->get_total('edit'));
    error_log('SC CHECKOUT PAYMENT METHOD: ' . $payment_method);
}

6. Не кешировать динамические WooCommerce-страницы

Важно: это не заменяет настройки кеш-плагина, Nginx, Cloudflare или серверного кеша. Исключения нужно настроить на всех уровнях кеширования.

<?php
add_action('template_redirect', 'sc_no_cache_for_woocommerce_checkout_pages');

function sc_no_cache_for_woocommerce_checkout_pages() {
    if (!function_exists('is_cart') || !function_exists('is_checkout') || !function_exists('is_account_page')) {
        return;
    }

    if (is_cart() || is_checkout() || is_account_page()) {
        nocache_headers();
    }
}

Результат

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

Хороший результат

  • wc-ajax=checkout отвечает без долгого ожидания;
  • wc-ajax=update_order_review не подвисает при смене адреса или доставки;
  • заказ создаётся один раз, без дублей;
  • платёжный шлюз корректно меняет статус заказа;
  • покупатель попадает на страницу “Thank you”;
  • письма WooCommerce не блокируют оформление;
  • CRM, Telegram и склад не тормозят checkout;
  • в debug.log нет fatal errors;
  • в WooCommerce logs нет ошибок оплаты или доставки;
  • Cart, Checkout и My account исключены из полного кеширования.

Дополнительные способы

Вариант 1: Упростить checkout

Подходит, если форма перегружена лишними полями, проверками, масками, блоками и скриптами.

Плюсы: меньше полей, меньше валидации, проще покупателю.

Минусы: не решит проблему медленного API, оплаты или базы.

Вариант 2: Перенести интеграции в фон

Подходит, если заказ отправляется в CRM, Telegram, Google Sheets, ERP или склад прямо во время оформления.

Плюсы: покупатель быстрее получает ответ после клика.

Минусы: нужна очередь, логи и повторные попытки.

Вариант 3: Оптимизировать доставку

Подходит, если тормозит update_order_review при смене адреса, города или способа доставки.

Плюсы: ускоряет пересчёт итогов и работу checkout.

Минусы: нужно проверять правила доставки, зоны, API и купоны.

Вариант 4: Проверить платёжный шлюз

Подходит, если тормоз начинается после нажатия “Оформить заказ” или при редиректе на оплату.

Плюсы: часто быстро показывает реальную причину.

Минусы: может потребоваться доступ к логам банка или провайдера оплаты.

Вариант 5: Перевести заказы на HPOS

Подходит не всем. HPOS может помочь большим магазинам с большим количеством заказов, но перед включением нужно проверить совместимость темы, плагинов оплаты, доставки, CRM и отчётов.

Плюсы: в некоторых проектах снижает нагрузку на старые post/postmeta-таблицы.

Минусы: несовместимые плагины могут сломать обработку заказов.

Безопасность

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

Что нельзя делать

  • нельзя кешировать Checkout как обычную страницу;
  • нельзя отключать WooCommerce checkout scripts глобально;
  • нельзя отключать проверку nonce и валидацию формы;
  • нельзя менять статусы заказа без понимания платёжного сценария;
  • нельзя удалять order meta или sessions без бэкапа;
  • нельзя отключать webhooks оплаты на рабочем магазине без теста;
  • нельзя переносить оплату в фон;
  • нельзя тестировать опасные правки в часы продаж.

Что нужно использовать

  • staging-копию;
  • резервную копию файлов и базы;
  • debug.log;
  • WooCommerce logs;
  • логи платёжного шлюза;
  • логи SMTP/API;
  • Network в браузере;
  • проверку тестового заказа после каждого изменения;
  • пошаговое отключение плагинов, а не хаотичные правки.

Производительность

Checkout нельзя ускорять только кешем. Это динамический процесс, где важнее убрать лишние операции во время оформления заказа.

Что обычно даёт эффект

  • отключить лишние плагины и скрипты только на checkout;
  • убрать тяжёлые API-запросы из синхронной обработки;
  • сократить количество checkout fields;
  • не генерировать PDF прямо во время оформления;
  • не отправлять тяжёлые вложения в email сразу после заказа;
  • использовать очередь для CRM/Telegram/ERP;
  • проверить object cache и базу данных;
  • проверить PHP memory_limit и версию PHP;
  • очистить мусорные transients и сессии после бэкапа;
  • проверить медленные SQL-запросы.

Что может навредить

  • delay JS для WooCommerce checkout scripts;
  • объединение всех скриптов без исключений;
  • кеширование checkout HTML;
  • отключение wc-cart-fragments без понимания мини-корзины;
  • отключение Heartbeat или AJAX без проверки;
  • очистка базы без резервной копии;
  • перевод всех задач в cron без логов и статусов.

Частые ошибки

Смотреть только PageSpeed

PageSpeed может показывать хорошую страницу checkout, но не видеть долгий серверный запрос после клика “Оформить заказ”. Нужно смотреть Network и время wc-ajax=checkout.

Кешировать checkout

Checkout должен быть динамическим. Полный page cache может ломать сессии, nonce, доставку, оплату и корзину.

Оставлять CRM/API внутри checkout

Если внешний сервис отвечает медленно, покупатель ждёт. Лучше сохранить заказ, а интеграцию выполнить в фоне с логом и повторной попыткой.

Не проверять SMTP

Медленная отправка писем может задерживать заказ. Особенно если письмо содержит тяжёлый шаблон, PDF или отправляется через нестабильный SMTP.

Игнорировать доставку

Если доставка считается через внешний API, тормоз может появляться ещё до нажатия финальной кнопки, при каждом изменении адреса.

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

Один платёжный метод может работать быстро, другой — зависать из-за API, callback, webhook или проверки статуса.

Не смотреть debug.log

Ошибка PHP может не выводиться на экран, но тормозить или ломать checkout. Лог часто показывает настоящую причину.

Отключать плагины на живом магазине

Так можно сломать оплату, доставку или заказы. Для диагностики нужен staging или период низкой активности.

Диагностика проблем

Проблема: после клика “Оформить заказ” крутится загрузка

  • открыть DevTools → Network;
  • найти wc-ajax=checkout;
  • проверить время запроса;
  • проверить Response;
  • проверить debug.log;
  • проверить WooCommerce logs;
  • временно проверить другой способ оплаты на staging;
  • проверить SMTP и внешние API.

Проблема: checkout долго пересчитывает доставку

  • найти wc-ajax=update_order_review;
  • отключить внешние доставки на тестовой копии;
  • оставить простой flat rate;
  • проверить shipping zones;
  • проверить купоны;
  • проверить геолокацию;
  • проверить API службы доставки;
  • проверить плагины checkout fields.

Проблема: заказ создаётся, но страница зависает

  • проверить, на каком хуке зависает процесс;
  • проверить отправку email;
  • проверить CRM/API;
  • проверить Telegram-уведомления;
  • проверить генерацию PDF-счёта;
  • проверить webhooks;
  • перенести тяжёлые действия в фон;
  • проверить логи после создания заказа.

Проблема: ошибка 504 при оформлении заказа

  • проверить max_execution_time;
  • проверить server error logs;
  • проверить долгие API-запросы;
  • проверить платёжный шлюз;
  • проверить доставку;
  • проверить SMTP;
  • отключить тяжёлые интеграции на staging;
  • найти процесс, который не завершился вовремя.

Проблема: checkout медленный только у гостей

  • проверить page cache для гостей;
  • проверить WooCommerce cookies;
  • проверить CDN;
  • проверить кеш мобильной версии;
  • проверить security/firewall rules;
  • проверить session cookies;
  • сравнить Network у гостя и администратора.

Проблема: checkout медленный после обновления

  • проверить debug.log;
  • проверить WooCommerce Status;
  • проверить устаревшие templates;
  • проверить плагины оплаты и доставки;
  • проверить PHP version;
  • проверить compatibility с HPOS;
  • проверить конфликт плагинов на staging;
  • очистить кеш после обновления.

Проблема: заказы дублируются

  • проверить, не нажимает ли пользователь кнопку повторно;
  • проверить JS блокировку кнопки Place order;
  • проверить платёжный gateway callback;
  • проверить повторные webhooks;
  • проверить idempotency в API оплаты;
  • проверить, не создаёт ли кастомный код второй заказ;
  • проверить логи WooCommerce и gateway logs.

Краткие ответы для AI-поиска

Почему WooCommerce долго оформляет заказ?

WooCommerce долго оформляет заказ из-за медленного wc-ajax=checkout, платёжного шлюза, доставки, SMTP, CRM/API, Telegram, webhooks, тяжёлых плагинов, медленной базы, PHP-ошибок или неправильного кеширования checkout.

Что проверить первым при медленном checkout?

Сначала откройте DevTools → Network и проверьте, какой запрос тормозит: wc-ajax=checkout или wc-ajax=update_order_review. Потом смотрите debug.log, WooCommerce logs, оплату, доставку, SMTP и внешние API.

Почему wc-ajax=checkout долго отвечает?

Этот запрос обрабатывает финальное оформление заказа. Его могут задерживать создание заказа, оплата, письма, CRM, webhooks, генерация PDF, склад, кастомные hooks и медленная база данных.

Можно ли кешем ускорить оформление заказа?

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

FAQ

Почему WooCommerce долго думает после нажатия “Оформить заказ”?

Потому что после клика WooCommerce запускает серверную обработку: проверку полей, создание заказа, оплату, доставку, письма, webhooks, CRM и другие хуки. Один медленный этап задерживает весь ответ.

Что такое wc-ajax=checkout?

Это AJAX-запрос WooCommerce, который отправляется при оформлении заказа. Именно он часто показывает реальное время обработки заказа после клика на кнопку.

Что такое wc-ajax=update_order_review?

Это AJAX-запрос, который пересчитывает итог заказа, доставку, налоги и купоны на checkout. Если он медленный, чаще всего проблема в доставке, налогах, купонах или checkout hooks.

Может ли SMTP тормозить оформление заказа?

Да. Если WooCommerce отправляет письма сразу после создания заказа, а SMTP отвечает медленно, покупатель может ждать завершения checkout дольше.

Может ли CRM тормозить checkout?

Да. Если заказ отправляется в CRM синхронно во время оформления, медленный API CRM задержит ответ покупателю. Лучше использовать очередь и фоновую отправку.

Может ли платёжный плагин быть причиной?

Да. Платёжный шлюз может долго ждать API, callback, webhook или неправильно менять статус заказа. Нужно проверить gateway logs и сравнить с другим способом оплаты.

Можно ли отключить плагины на checkout?

Можно отключать только лишние скрипты и только после проверки. Нельзя отключать WooCommerce scripts, оплату, доставку и важные хуки, которые нужны для заказа.

Поможет ли HPOS ускорить checkout?

В некоторых магазинах с большим количеством заказов HPOS может помочь снизить нагрузку на старые таблицы post/postmeta. Но перед включением нужно проверить совместимость всех плагинов.

Почему checkout медленный только на мобильном?

Причина может быть в мобильном кеше, тяжёлом JavaScript, popups, мобильной мини-корзине, delay JS или отдельном мобильном шаблоне темы.

Что делать, если checkout выдаёт 504?

Нужно смотреть server logs, debug.log, max_execution_time, внешние API, оплату, доставку, SMTP и кастомные hooks. 504 обычно означает, что сервер не дождался завершения процесса.

Вывод

Если WooCommerce долго оформляет заказ, причина почти всегда находится в серверной цепочке checkout: wc-ajax=checkout, оплата, доставка, письма, CRM, webhooks, база данных, PHP или кастомные хуки. Простая оценка PageSpeed здесь не поможет, потому что проблема возникает после клика “Оформить заказ”.

Правильный порядок такой: найти медленный AJAX-запрос в Network, включить debug.log, проверить WooCommerce logs, протестировать простую оплату и доставку, отключить тяжёлые интеграции на staging, проверить SMTP, базу и кеш. После этого можно точно понять, что задерживает покупателя, и ускорить checkout без риска сломать оплату, корзину и заказы.

Об авторе

vkuzyomko administrator