woocommerce скрыть способы доставки условно по номеру - PullRequest
0 голосов
/ 19 марта 2019

Если в корзине более 15 товаров. Как я могу принудительно назначить только один желаемый способ доставки (например, DHL) и скрыть все другие способы доставки?

У меня уже есть плагин «гибкая доставка», но я предпочитаю использовать хук в functions.php.

1 Ответ

1 голос
/ 19 марта 2019

В следующем случае активируется только один определенный способ доставки, если в корзине более 15 товаров:

add_filter( 'woocommerce_package_rates', 'hide_shipping_methods_based_on_item_count', 10, 2 );
function hide_shipping_methods_based_on_item_count( $rates, $package ) {
    // HERE the targeted shipping method ID (see the attribute "value" of the related shipping method input field)
    $targeted_method_id = 'flat_rate:12'; // <== Replace with your DHL shipping method ID

    // HERE the articles count threshold
    $more_than = 15;

    // Cart items count
    $item_count = WC()->cart->get_cart_contents_count();
    if( WC()->cart->get_cart_contents_count() > $more_than ) {
        foreach ( $rates as $rate_key => $rate ) {
            if ( $rate->id != $targeted_method_id ) {
                unset($rates[$rate_key]);
            }
        }
    }

    return $rates;
}

Код поступает в файл function.php вашей активной дочерней темы (или темы). Проверено и работает.

Обновите кэши доставки: (обязательно)

  1. Этот код уже сохранен в файле function.php вашей активной темы.
  2. Корзина пуста
  3. В настройках зоны доставки отключите / сохраните любой способ доставки, затем включите обратно / сохраните.

Вы закончили , и вы можете проверить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...