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

Диагностика проблемы с автообновлением платежных методов в WooCommerce

Автоматическое обновление статусов и доступности платежных методов в WooCommerce может приводить к неожиданным ситуациям, когда устаревшие или временно недоступные методы остаются активными. Это особенно актуально, если вы хотите отключать определённые способы оплаты по времени, например, ночью или в выходные.

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

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

Основные хуки и фильтры WooCommerce для управления платежными методами

Для управления доступностью платежных методов используется фильтр woocommerce_available_payment_gateways. Через него можно динамически исключать методы из списка доступных для пользователя.

Пошаговое решение: отключение платежного метода по времени

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

add_filter('woocommerce_available_payment_gateways', 'disable_payment_gateway_by_time');
function disable_payment_gateway_by_time($gateways) {
    // Получаем текущее время в формате 24ч
    $current_hour = (int) current_time('H');

    // Платежные методы для отключения с 22:00 до 06:00
    $methods_to_disable = ['cod', 'bacs']; // пример: наложенный платеж и банковский перевод

    // Если текущее время в диапазоне 22:00 - 06:00
    if ($current_hour >= 22 || $current_hour < 6) {
        foreach ($methods_to_disable as $method_id) {
            if (isset($gateways[$method_id])) {
                unset($gateways[$method_id]);
            }
        }
    }

    return $gateways;
}

В этом примере платежные методы с ID cod (оплата при доставке) и bacs (банковский перевод) будут недоступны с 22:00 до 06:00. Вы можете изменить список $methods_to_disable под свои нужды.

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

  • Откройте страницу оформления заказа в WooCommerce в разное время суток (например, вручную измените время на сервере или используйте отладчик времени).
  • Проверьте, что указанные методы оплаты исчезают из списка доступных в нужное время и появляются обратно после 6 утра.
  • Для проверки можно добавить временный лог в файл, например:
error_log('Текущее время: ' . current_time('H') . ' - доступные методы: ' . implode(', ', array_keys($gateways)));

Логи в wp-content/debug.log помогут понять, когда и какие методы доступны.

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

  • Методы оплаты не отключаются: Проверьте, что ID методов оплаты правильные. Их можно посмотреть в WooCommerce > Настройки > Платежи или в коде плагинов.
  • Время не соответствует реальному серверному времени: WooCommerce использует функцию current_time(), которая учитывает часовой пояс WordPress. Убедитесь, что часовой пояс сайта установлен корректно.
  • Кэширование мешает увидеть изменения: Очистите кэш сайта и браузера, отключите кэширование на время теста.
  • Код конфликтует с другими плагинами: Отключите другие плагины, которые могут изменять платежные методы, и проверьте работоспособность.

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

  • Используйте минимально необходимый код в functions.php и тестируйте на тестовом сайте перед внедрением на продакшн.
  • Не храните чувствительные данные в коде, лучше используйте настройки в админке с помощью опций или настроек плагина.
  • Для сложных расписаний рассмотрите использование WP-Cron для изменения опций или статусов методов оплаты, чтобы не нагружать фильтр каждый раз.

Сравнение способов отключения платежных методов по времени

СпособКодПлагинКомпромисс
Фильтр woocommerce_available_payment_gatewaysДа, гибкоНетТребует навыков программирования
Плагины расписания платежейНетМожет быть (редко)Меньше контроля и гибкости
WP-Cron для автоотключенияДа, с дополнительным кодомНет (обычно кастом)Сложнее в настройке, но лучше для сложных расписаний
Автоматическая синхронизация заказов WordPress и 1С
15.01.2026
Оптимизация обработки заказов в WordPress: лучшие практики и примеры кода
07.11.2025
Как отключить автообновление плагинов WordPress
12.03.2026
Автоматизация подсчёта суммы заказов по датам в WordPress
11.02.2026
WooCommerce: автоматическое удаление неоплаченных заказов по времени
13.05.2026