Как отключить AJAX в WooCommerce при массовом обновлении заказов

Диагностика проблемы с AJAX при массовом обновлении заказов в WooCommerce

При массовом обновлении заказов в WooCommerce, особенно на больших магазинах, нередко возникает проблема с ошибкой 429 Too Many Requests или медленной работой админки. Основная причина — Ajax-запросы, которые WooCommerce отправляет при каждом обновлении, создавая избыточную нагрузку на сервер и вызывая блокировки, особенно если хостинг имеет ограничения на количество одновременных запросов.

Чтобы подтвердить, что проблема именно в AJAX, выполните следующие действия:

  • Откройте консоль браузера (F12 → Network) и посмотрите, какие запросы отправляются при обновлении заказов.
  • Если видите множественные ajax-admin запросы к WooCommerce, и при этом сервер возвращает ошибку 429, значит именно ajax-запросы вызывают проблему.
  • Проверьте логи сервера на наличие ошибок типа Too Many Requests или превышение лимитов PHP-FPM.

Почему WooCommerce использует AJAX при обновлении заказов

AJAX в WooCommerce применяется для обновления статуса заказов без перезагрузки страницы, что удобно для администратора. Однако при массовом обновлении, когда обрабатывается десятки или сотни заказов, каждый ajax-запрос добавляет нагрузку и может привести к сбоям.

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

Пошаговое решение: отключение AJAX при массовом обновлении заказов

1. Создание сниппета для отключения AJAX в админке WooCommerce

Добавьте следующий код в файл functions.php вашей дочерней темы или в отдельный плагин:

add_action('admin_enqueue_scripts', function() {
    if (isset($_GET['post_type']) && $_GET['post_type'] === 'shop_order') {
        // Отключаем jQuery ajax для страницы заказов
        wp_deregister_script('jquery');
        wp_register_script('jquery', false);
    }
});

Этот код отключит загрузку jQuery AJAX на странице редактирования заказов, что приведёт к классической отправке формы при обновлении.

2. Альтернативный способ — переопределение JavaScript WooCommerce

Можно отключить только конкретный скрипт ajax в WooCommerce:

add_action('admin_enqueue_scripts', function() {
    if (isset($_GET['post_type']) && $_GET['post_type'] === 'shop_order') {
        wp_dequeue_script('wc-admin-meta-boxes');
    }
});

Этот скрипт отвечает за ajax-обновления мета-блоков в заказах.

3. Установка лимита на количество обновляемых заказов за один раз

Чтобы избежать проблем с производительностью, обновляйте заказы частями (например, по 20–30 штук), если используется массовое редактирование. Это можно контролировать через интерфейс или собственный код при автоматизации.

Как проверить, что отключение AJAX сработало

  • На странице редактирования заказов откройте консоль разработчика → вкладка Network.
  • При обновлении нескольких заказов убедитесь, что ajax-запросы не отправляются (отсутствует ajax-admin запрос).
  • Обратите внимание на поведение страницы: обновление происходит с полной перезагрузкой, без динамического изменения статусов.
  • Проверьте логи сервера — ошибка 429 должна исчезнуть.

Частые ошибки при отключении AJAX и как их исправить

  • Ошибка: После отключения AJAX страница заказов перестала корректно обновляться.
    Причина: Отключен весь jQuery, что ломает другие скрипты.
    Решение: Используйте точечное отключение скриптов WooCommerce, а не jQuery целиком.
  • Ошибка: Все еще видна ошибка 429 при массовом обновлении.
    Причина: Обновление слишком большого количества заказов за раз.
    Решение: Делите обновления на меньшие партии, либо оптимизируйте серверные лимиты.
  • Ошибка: При отключении ajax-скриптов админка работает медленнее.
    Причина: Полная перезагрузка страницы требует больше ресурсов.
    Решение: Найти баланс между AJAX и классическим обновлением, использовать кэширование.

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

  • Настройте лимиты PHP-FPM и Nginx/Apache, чтобы сервер мог обрабатывать больше одновременных запросов.
  • Используйте WP-CLI для массовых изменений заказов без интерфейса и ajax-запросов.
  • Ограничьте права пользователей, чтобы только администраторы могли делать массовые обновления, чтобы избежать случайных перегрузок.
  • Мониторьте нагрузку сервера во время массовых операций, чтобы вовремя корректировать объем задач.

Сравнение вариантов отключения AJAX в WooCommerce

МетодОписаниеПреимуществаНедостатки
Отключение jQuery полностьюwp_deregister_script('jquery') на странице заказовПростое решение, отключает все ajaxМожет сломать другие скрипты в админке
Отключение конкретного скрипта WooCommercewp_dequeue_script('wc-admin-meta-boxes')Тонкая настройка, минимальное влияниеМожет не полностью убрать ajax
Использование WP-CLIМассовое обновление заказов через командную строкуОбходит веб-интерфейс, без ajaxТребует доступа к серверу и навыков CLI

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
WooCommerce: как массово удалить неиспользуемые варианты товаров без плагинов
03.06.2026
Оптимизация базы данных WordPress без потери данных: практические методы
15.12.2025
Как создать настройку в админке WordPress: подробное руководство
10.11.2025
WooCommerce: как массово удалить варианты товаров без продаж
31.05.2026
Как создать настройку для отключения Emoji в WordPress с примерами кода
25.12.2025
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее