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

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

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

Как проверить, какие методы оплаты доступны

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

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

Пошаговое решение: отключение платёжных методов с помощью фильтра woocommerce_available_payment_gateways

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

Пример: отключаем оплату наличными (название метода cod) для заказов свыше 5000 рублей и для гостей (незарегистрированных пользователей).

add_filter('woocommerce_available_payment_gateways', 'custom_disable_payment_gateways_based_on_conditions');
function custom_disable_payment_gateways_based_on_conditions($available_gateways) {
    if (!is_user_logged_in()) {
        if (isset($available_gateways['cod'])) {
            unset($available_gateways['cod']);
        }
    }

    $cart_total = WC()->cart->total;
    if ($cart_total > 5000) {
        if (isset($available_gateways['cod'])) {
            unset($available_gateways['cod']);
        }
    }

    return $available_gateways;
}

Этот код нужно добавить в файл functions.php темы или в отдельный плагин для кастомных функций.

Пример отключения по категории товара

Если требуется отключить метод для товаров определённой категории, можно просмотреть корзину:

add_filter('woocommerce_available_payment_gateways', 'disable_gateway_for_category');
function disable_gateway_for_category($available_gateways) {
    $disable_for_cat = 'special-category'; // слаг категории
    $has_cat = false;

    foreach (WC()->cart->get_cart() as $cart_item) {
        $product_id = $cart_item['product_id'];
        if (has_term($disable_for_cat, 'product_cat', $product_id)) {
            $has_cat = true;
            break;
        }
    }

    if ($has_cat && isset($available_gateways['bacs'])) { // отключаем банковский перевод
        unset($available_gateways['bacs']);
    }

    return $available_gateways;
}

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

  • Добавьте в корзину товары с разными условиями (сумма, категории).
  • Оформите заказ как гость и как авторизованный пользователь.
  • На странице оплаты убедитесь, что отключенные методы не отображаются.
  • Очистите кэш сайта и браузера, если изменения не видны.

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

  • Метод оплаты не отключается: Проверьте правильность ID метода оплаты (например, cod, bacs, paypal).
  • Код добавлен не в правильное место: Функции должны быть в functions.php активной темы или в плагине, а не в шаблонах.
  • Кэш мешает проверке: Очистите кэш плагинов кэширования и браузера.
  • Ошибка PHP: Проверьте логи сервера, возможно, синтаксическая ошибка в коде.

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

  • Не делайте слишком сложную логику в цикле корзины — кешируйте результаты, если возможно.
  • Проверяйте ID методов оплаты в WooCommerce, они могут отличаться у сторонних плагинов.
  • Если нужно много условий — рассмотрите использование готовых плагинов, например, Clearfy Pro или специализированных расширений WooCommerce.
  • Обязательно тестируйте на staging-сайте, чтобы не поломать процесс оплаты.

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

МетодПлюсыМинусыКогда использовать
Код через woocommerce_available_payment_gatewaysГибко, бесплатно, можно кастомизировать под любые условияТребует навыков PHP, может увеличивать время загрузки при сложных проверкахЛёгкие и средние по сложности ограничения, уникальные условия
Плагины для управления оплатойПростота настройки, готовые условия, поддержкаПлатные, могут конфликтовать с темой и другими плагинамиСложные бизнес-правила, быстрый запуск
Изменение настроек WooCommerceПростота, не требует кодаОчень ограниченный функционалПростые ограничения (например, отключить метод для страны)
WooCommerce: установка лимитов на количество товаров в корзине по ролям пользователей
19.06.2026
Как установить и настроить OmniVideo в WordPress
25.02.2026
Оптимизация базы данных WordPress: ускоряем сайт и улучшаем производительность
23.11.2025
Как создать автоматическую резервную копию WordPress с помощью плагинов и собственного кода
20.11.2025
WooCommerce: автоматическое отключение платных методов оплаты при определённых условиях
22.06.2026