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

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

Массовое обновление заказов в WooCommerce, особенно при большом количестве, часто приводит к проблемам с производительностью и ошибкам типа 429 Too Many Requests. Это связано с тем, что AJAX-запросы выполняются параллельно и создают высокую нагрузку на сервер и базу данных.

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

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

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

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

По умолчанию WooCommerce использует AJAX для обновления отдельных заказов в списке. Чтобы отключить AJAX и использовать традиционную форму с отправкой данных, нужно переопределить соответствующие скрипты и обработку.

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

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

add_action('admin_enqueue_scripts', function() {
    $screen = get_current_screen();
    if ( $screen && 'edit-shop_order' === $screen->id ) {
        wp_dequeue_script('wc-admin-order-actions');
        wp_dequeue_script('wc-order-data-store');
    }
});

Этот код отключит скрипты, которые отвечают за AJAX-обновление заказов в админке.

2. Использование нестандартного массового обновления через форму

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

  • Перейдите в раздел Заказы в админке;
  • Выберите заказы, которые хотите обновить;
  • В выпадающем списке массовых действий выберите нужное обновление (например, смену статуса);
  • Нажмите кнопку Применить;
  • Дождитесь завершения операции.

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

3. Оптимизация массового обновления через WP-CLI

При большом количестве заказов лучше автоматизировать обновление через WP-CLI, что исключит нагрузку на веб-сервер. Пример команды:

wp post list --post_type=shop_order --format=ids | xargs -d ' ' -n 50 wp post update --post_status=completed

Эта команда обновит статус заказов партиями по 50 штук, минимизируя нагрузку.

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

  • Попробуйте выполнить массовое обновление заказов через админку;
  • Убедитесь, что ошибки 429 и 504 больше не появляются;
  • Проверьте логи сервера на отсутствие превышения лимитов;
  • В консоли браузера отсутствуют AJAX-запросы при массовом обновлении.

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

Ошибка 1: AJAX-скрипты не отключаются

Проверьте, что хук admin_enqueue_scripts используется с правильным приоритетом и что условие get_current_screen() возвращает верный идентификатор экрана (edit-shop_order).

Ошибка 2: массовое обновление не срабатывает

После отключения AJAX убедитесь, что форма массовых действий корректно отправляется и обрабатывается. Проверьте наличие необходимых nonce и прав пользователя.

Ошибка 3: высокая нагрузка на сервер при обновлении через WP-CLI

Снизьте размер партий (параметр -n в xargs) и используйте sleep между партиями, если сервер всё равно перегружается.

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

  • Ограничьте доступ к массовому обновлению заказов только администраторам;
  • Используйте WP-CLI для больших объемов, избегая AJAX и HTTP-запросов;
  • Регулярно оптимизируйте базу данных WooCommerce для снижения времени отклика;
  • Мониторьте логи сервера и базы для обнаружения узких мест;
  • Рассмотрите внедрение очередей задач для пакетной обработки заказов.

Сравнение вариантов отключения AJAX при массовом обновлении заказов

МетодПлюсыМинусыРекомендации
Отключение скриптов AJAXПростая реализация, работает в админкеМожет повлиять на другие функции заказаИспользовать с проверкой функционала
Использование стандартной формы массовых действийСтабильная работа без AJAXМенее интерактивно, требует перезагрузки страницыПодходит для небольших объемов
WP-CLI для массового обновленияМаксимальная производительность и контрольТребует доступа к серверу и знаний CLIЛучший вариант для больших магазинов

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

⭐⭐⭐⭐⭐
Как создать динамический попап в WordPress на AJAX с примером кода
27.02.2026
WooCommerce: как оптимизировать массовое обновление заказов и товаров без ошибок
01.07.2026
Как создать динамические формы в WordPress с помощью WPRemark
21.01.2026
Как создать многоуровневую пагинацию в WordPress с примерами кода
10.02.2026
Как создать пользовательскую роль в WordPress с примерами кода
12.12.2025
×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее