Скрыть все Способы доставки по фиксированным ставкам для определенных классов доставки в WooCommerce - PullRequest
1 голос
/ 14 апреля 2019

Я настраиваю веб-сайт с отправкой, но у меня есть предметы, которые собираются для всех зон доставки, и предметы, которые можно отправлять во все зоны доставки.

Поэтому я настроил классы доставки для всехзоны.

Я использую " Скрыть способ доставки для определенных классов доставки в коде woocommerce " , и это то, что мне нужно.

Но вместо ввода каждого идентификатора flat_rate есть ли способ нацелить на все методы доставки по фиксированной ставке , поэтому при добавлении другой настройки доставки по фиксированной ставке, это сработает, и я не буду вносить изменения в код.

Надеюсь, вы понимаете, о чем я.Любая помощь приветствуется.

1 Ответ

0 голосов
/ 14 апреля 2019

Чтобы использовать его для всех «фиксированных тарифов» способов доставки и некоторых других определенных способов доставки, вместо этого вы будете использовать следующее:

add_filter( 'woocommerce_package_rates', 'hide_shipping_method_based_on_shipping_class', 10, 2 );
function hide_shipping_method_based_on_shipping_class( $rates, $package )
{
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    // HERE define your shipping class to find
    $class = 92;

    // HERE define the shipping methods you want to hide (others than "flat rate")
    $method_key_ids = array('local_pickup:3');

    $found = false;

    // Checking in cart items
    foreach( $package['contents'] as $cart_item ){
        // If we find the shipping class
        if( $cart_item['data']->get_shipping_class_id() == $class ){
            $found = true;
            break; // Stop the loop
        }
    }

    if( ! $found ) 
        return $rates;

    // Loop through shipping methods
    foreach( $rates as $rate_key => $rate ) {
        // Targetting "Flat rate" and other defined shipping mehods
        if( 'flat_rate' === $rate->method_id || in_array($rate->id, $method_key_ids) ) {
            unset($rates[$rate_key]);
        }
    }   

    return $rates;
}

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

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

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