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

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

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

Типичные ситуации:

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

Как проверить, что платёжные системы отключаются по условиям

Для диагностики откройте страницу оформления заказа и последовательно изменяйте параметры заказа (сумму, адрес, статус пользователя) — нужные методы оплаты должны пропадать или появляться.

Если этого не происходит, значит, условия не применяются или есть конфликт с другими плагинами/темой.

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

Самый надёжный и гибкий способ — подключить фильтр woocommerce_available_payment_gateways в functions.php вашей темы или в кастомном плагине.

Пример: отключаем платежи «наложенным платежом» для заказов выше 10000 рублей и для гостей сайта.

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

    $minimum_amount = 10000;
    $current_user = wp_get_current_user();
    $cart_total = WC()->cart->total;

    // Отключаем наложенный платеж для гостей и если сумма больше лимита
    if (($cart_total > $minimum_amount) || !$current_user->exists()) {
        if (isset($available_gateways['cod'])) { // 'cod' — ID наложенного платежа
            unset($available_gateways['cod']);
        }
    }

    return $available_gateways;
}

Пояснения:

  • woocommerce_available_payment_gateways — фильтр для изменения доступных методов оплаты.
  • cod — ID платежного шлюза (наложенный платеж). Для других методов нужно использовать их ID, можно посмотреть в WooCommerce > Настройки > Платежи.
  • Проверяем сумму корзины и авторизацию пользователя.

Расширение: отключение по способу доставки

Если нужно отключить оплату по способу доставки, например, «Самовывоз» — добавьте проверку:

$chosen_methods = WC()->session->get('chosen_shipping_methods');
if (is_array($chosen_methods) && in_array('local_pickup', $chosen_methods)) {
    unset($available_gateways['cod']);
}

Как проверить, что решение работает

  • Очистите кэш сайта и браузера, если есть кэш-плагины.
  • Зайдите на страницу оформления заказа.
  • Установите сумму корзины выше 10000 рублей и проверьте, что «Наложенный платёж» исчез.
  • Сделайте заказ как гость и как авторизованный пользователь, чтобы проверить условие на пользователя.
  • Выберите способ доставки «Самовывоз» и убедитесь, что нужные способы оплаты отключены.

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

  • Платёжный метод не отключается: проверьте правильность ID платежного шлюза. Для этого зайдите в WooCommerce > Настройки > Платежи и посмотрите slug метода (например, 'cod', 'bacs', 'paypal').
  • Ошибка в админке при сохранении настроек: убедитесь, что код подключён только во фронтенде, добавьте проверку if (is_admin()) return $available_gateways;.
  • Кэш мешает изменениям: отключите или очистите кэш плагинов и браузера.
  • Другие плагины конфликтуют: временно отключите другие плагины, чтобы проверить влияние.

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

  • Не вставляйте код напрямую в functions.php основной темы — используйте дочернюю тему или отдельный плагин, чтобы не потерять изменения при обновлении.
  • Проверяйте производительность — если условия сложные, кешируйте результаты или используйте transient API.
  • Тестируйте на staging-сайте, чтобы не сломать работу магазина в рабочем режиме.

Сравнение способов реализации

СпособПлюсыМинусыПример кода
Код в functions.phpПолный контроль, нет лишних плагиновТребует навыков PHP, возможны ошибкиВ статье
Плагины для условий оплаты (Conditional Payment Gateways)Простой интерфейс для настройкиНагрузка на сайт, платные версииWooCommerce Conditional Shipping and Payments
Использование хуков и сторонних сервисовМожно гибко настраиватьСложность, зависит от сторонних APIНастройка через REST API

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

⭐⭐⭐⭐⭐
Как создать выпадающий список с автоподстановкой в WordPress
01.01.2026
WooCommerce: автоматическое отключение платёжных систем по условиям заказа
20.06.2026
Как использовать WPRemark для автоматического отзыва в комментариях WordPress
01.04.2026
Оптимизация базы данных WordPress: успешные методы и примеры
01.11.2025
Как создать обновляемую карту сайта XML в WordPress с поддержкой фильтрации
27.01.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше