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

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

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

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

Шаги решения: реализация отключения платежных методов по расписанию

1. Определение расписания для каждого метода оплаты

Для примера возьмём два метода: cod (наложенный платёж), доступный по будням, и cheque (оплата чеком), доступный только по выходным.

2. Хук для фильтрации доступных методов оплаты

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

3. Пример кода для functions.php или собственного плагина

add_filter('woocommerce_available_payment_gateways', 'wporder_disable_payment_methods_by_schedule');
function wporder_disable_payment_methods_by_schedule($available_gateways) {
    if (is_admin()) return $available_gateways; // Не трогаем админку

    $current_day = date('N'); // 1 (Пн) - 7 (Вс)

    // Отключаем наложенный платеж по выходным (6 - Сб, 7 - Вс)
    if (isset($available_gateways['cod']) && in_array($current_day, [6,7])) {
        unset($available_gateways['cod']);
    }

    // Отключаем оплату чеком по будням (1-5)
    if (isset($available_gateways['cheque']) && $current_day >= 1 && $current_day <= 5) {
        unset($available_gateways['cheque']);
    }

    return $available_gateways;
}

4. Автоматизация с помощью WP-Cron

Если нужно выполнять дополнительные действия или логировать изменения, можно создать WP-Cron задачу, которая будет запускаться по расписанию. Но для базового отключения хватает фильтра.

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

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

  • Перейдите на страницу оформления заказа в магазине в разное время/дни.
  • Убедитесь, что в выходные cod отсутствует, а в будни отсутствует cheque.
  • Для отладки можно временно добавить error_log внутри функции и смотреть логи сервера.

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

  • Методы не отключаются: возможно, код не подключён или конфликтует с кешем. Очистите кеш, проверьте, что функция вызывается (например, через error_log).
  • Платежные методы в админке не меняются: фильтр влияет только на фронтенд. Для админки нужна отдельная логика, если требуется.
  • Неверное время сервера: функция зависит от date(), которая использует серверное время. Проверьте часовой пояс WordPress (Settings > General) и сервера.

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

  • Не используйте тяжелые операции внутри фильтра woocommerce_available_payment_gateways, чтобы не замедлять оформление заказа.
  • Используйте wp_cache_set, если расписания или условия сложные и требуют вычислений.
  • Проверяйте, что отключение методов оплаты не приводит к отсутствию доступных вариантов — оставьте хотя бы один метод всегда активным.

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

МетодОписаниеПлюсыМинусы
Использование фильтра woocommerce_available_payment_gatewaysДинамическое отключение на фронтенде по условиямПростота, динамичность, не требует внешних задачЗависит от времени сервера, не влияет на админку
WP-Cron задачи для изменения статусов методовИзменение активных методов через обновление опций или настроекГибкость, можно логировать измененияСложнее в реализации, возможны задержки выполнения
Плагины управления платежами по расписаниюГотовые решения с UIУдобство для неразработчиковМогут быть платными, дополнительные зависимости
Как отключить автообновление плагинов WordPress
12.03.2026
WooCommerce: автоматическое удаление заказов по неоплаченному статусу
17.05.2026
Как автоматизировать изменение статьи на основе статистики просмотров в WordPress
30.03.2026
Автоматизация создания и редактирования заказов в WordPress
27.11.2025
Как создать автоматически обновляемый список заказов в WordPress с фильтрами и AJAX
26.02.2026