WooCommerce: автоматическое отключение платёжных методов по расписанию

Диагностика задачи: зачем и когда нужно отключать платёжные методы автоматически

В интернет-магазинах на WooCommerce часто возникает необходимость временно отключать определённые способы оплаты. Например, платёжный шлюз проходит техническое обслуживание ночью, или вы хотите отключить наложенный платёж в выходные, когда нет курьеров. Ручное отключение неудобно и может привести к ошибкам. Автоматизация по расписанию решает эти проблемы.

Как реализовать автоматическое отключение платёжных методов по времени

Основные шаги и логика работы

Идея в том, чтобы динамически фильтровать доступные платёжные методы при загрузке страницы оформления заказа, ориентируясь на текущее время и день недели. Для этого WooCommerce предоставляет фильтр woocommerce_available_payment_gateways.

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

Пример кода для отключения платёжного метода "cod" (наложенный платёж) по расписанию

add_filter('woocommerce_available_payment_gateways', 'disable_payment_gateways_by_schedule');
function disable_payment_gateways_by_schedule($gateways) {
    // Получаем текущий час и день недели
    $current_hour = (int) date('G'); // 0-23
    $current_day = (int) date('N');  // 1 (понедельник) - 7 (воскресенье)

    /*
     * Пример: отключаем "наложенный платёж" (cod)
     * по будням с 22:00 до 6:00 и в выходные полностью
     */

    // Отключение в выходные (суббота=6, воскресенье=7)
    if (in_array($current_day, [6,7])) {
        if (isset($gateways['cod'])) {
            unset($gateways['cod']);
        }
    }

    // Отключение ночью в будни
    if ($current_day >= 1 && $current_day <= 5) {
        if ($current_hour >= 22 || $current_hour < 6) {
            if (isset($gateways['cod'])) {
                unset($gateways['cod']);
            }
        }
    }

    return $gateways;
}

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

  • Перейдите на страницу оформления заказа в разное время суток и проверьте наличие нужного платёжного метода.
  • Для проверки на локальном сервере можно временно изменить в коде значения $current_hour и $current_day на фиксированные, чтобы имитировать разные периоды.
  • Включите режим отладки WooCommerce и проверьте, что фильтр применяется без ошибок.
  • Проверьте, что при отключении платёжного метода он пропадает из списка, а остальные методы остаются доступными.

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

  • Метод оплаты не отключается: Проверьте, что ID платёжного метода написан правильно. Например, для COD это "cod". Используйте print_r(array_keys($gateways)); внутри функции для отладки.
  • Время не совпадает с ожидаемым: Убедитесь, что сервер и WordPress используют правильный часовой пояс (Settings > General > Timezone).
  • Кэширование мешает обновлению: Если сайт использует кэш, очистите его после внедрения изменений, иначе старый список платёжных методов может показываться.
  • Код вызывает ошибки PHP: Проверьте синтаксис и используйте error_log или отладчик для выявления проблем.

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

  • Не добавляйте тяжелые операции в этот фильтр — он выполняется при каждой загрузке страницы оформления заказа.
  • Если расписание сложное, лучше вынести его в отдельную функцию или даже в настройку админки.
  • Для улучшения безопасности не храните в коде пароли и API-ключи платёжных систем, только логику отключения.
  • Тестируйте работу на staging-сервере перед внедрением на живой сайт.

Альтернативы: плагины vs кастомный код

СпособПлюсыМинусыПример
Плагин (например, Conditional Shipping and Payments)Графический интерфейс, гибкие правилаПлатно, может нагружать сайтWooCommerce CSP
Кастомный код (пример выше)Легковесный, точечное решение, бесплатныйТребует навыков PHP, ограниченный функционалКод в functions.php или отдельном плагине
Автоматизация управления статусами заказов в WordPress
29.12.2025
Как автоматизировать отправку отзывов после заказа WooCommerce
10.04.2026
Автоматический экспорт заказов WordPress в Google Sheets
27.01.2026
Создание автоматических отчетов по проблемам и ошибкам в WordPress с примерами кода
07.01.2026
Автоматическая синхронизация заказов WordPress и 1С
15.01.2026