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Гибкость, нет зависимостей, легкая кастомизацияТребует навыков программирования, не всегда удобно для сложных условийМаленькие и средние магазины, простые ограничения
Плагины с условиями оплаты и доставкиПростота настройки, поддержка интерфейсаПлатные, могут влиять на производительностьКрупные магазины, сложные сценарии
Комбинация кода и плагиновОптимальный баланс гибкости и удобстваСложнее в поддержкеСредние и крупные проекты
Как добавить настройки в регистрацию WordPress с подтверждением email
08.02.2026
Как использовать внешние API в WordPress с помощью AJAX: практическое руководство
02.04.2026
WooCommerce: Автоматическое изменение статуса заказа по расписанию
23.07.2026
Как использовать хуки WordPress для расширения функциональности сайта
06.11.2025
Как добавить автоматическое оптимизирование базы данных в WordPress
08.03.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее