WooCommerce: как установить ограничения на сроки доставки и способы оплаты для конкретных товаров

|

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

В стандартном WooCommerce нет гибкой настройки, позволяющей ограничить сроки доставки или методы оплаты в зависимости от конкретного товара. Это часто требуется для магазинов с товарами, требующими особых условий доставки (например, скоропортящиеся продукты) или разными способами оплаты (например, предоплата для дорогих товаров). Без таких ограничений покупатели могут выбрать неподходящий способ, что ведёт к ошибкам и возвратам.

Пошаговое решение: ограничиваем способы оплаты для товаров

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

Для примера добавим мета-поле или используем ID товаров, для которых нужно ограничить способы оплаты и сроки доставки.

function is_restricted_product_in_cart() {
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        $product_id = $cart_item['product_id'];
        // Пример: ограничение для товаров с ID 12 и 34
        if ( in_array( $product_id, array(12, 34) ) ) {
            return true;
        }
    }
    return false;
}

2. Отключаем способы оплаты для ограниченных товаров

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

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

    if ( is_restricted_product_in_cart() ) {
        // Удаляем все методы, кроме, например, 'bacs' (банковский перевод)
        foreach ( $gateways as $gateway_id => $gateway ) {
            if ( 'bacs' !== $gateway_id ) {
                unset( $gateways[ $gateway_id ] );
            }
        }
    }
    return $gateways;
}

3. Ограничиваем сроки доставки для определённых товаров

Для управления сроками доставки можно использовать пользовательское поле и фильтр woocommerce_shipping_methods или контролировать текст в корзине и оформлении заказа.

Пример добавления уведомления о сроках доставки:

add_action( 'woocommerce_review_order_before_shipping', 'add_custom_shipping_notice' );
function add_custom_shipping_notice() {
    if ( is_restricted_product_in_cart() ) {
        echo '<p style="color:red; font-weight:bold;">Внимание: доставка данных товаров осуществляется в течение 5-7 рабочих дней.</p>';
    }
}

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

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

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

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

Сравнение методов реализации ограничения способов оплаты и сроков доставки

МетодПлюсыМинусыПрименимость
Код на основе фильтров WooCommerceГибкость, нет зависимостей, легкая кастомизацияТребует навыков программирования, не всегда удобно для сложных условийМаленькие и средние магазины, простые ограничения
Плагины с условиями оплаты и доставкиПростота настройки, поддержка интерфейсаПлатные, могут влиять на производительностьКрупные магазины, сложные сценарии
Комбинация кода и плагиновОптимальный баланс гибкости и удобстваСложнее в поддержкеСредние и крупные проекты
Как добавить поддержку видеоплеера HTML5 в WordPress с примерами и плагинами
05.04.2026
Решение проблемы: WooCommerce не отправляет письма подтверждения заказов
26.04.2026
WooCommerce: программное удаление неактивных корзин и заказов без плагинов
04.06.2026
Как использовать REST API WordPress для создания кастомных функций
29.11.2025
Как создать эксклюзивный сайт на WordPress с поддержкой подписки и доступом к контенту
30.03.2026
×

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

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

пишет статьи

готовит SEO

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

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