Скрыть способы доставки для определенных классов доставки в WooCommerce - PullRequest
0 голосов
/ 01 июня 2019

В WooCommerce я скрываю способы доставки, основанные на разных классах доставки в корзине, используя " Скрыть способы доставки для определенного класса доставки в WooCommerce " код ответа (2-йспособ) , но проблема в том, что я использую плагин WPML, который управляет сайтом на 2 языках, поэтому поиск только одного класса не сделает этого.

Поэтому мне нужно обработать 2 класса доставки вместо одного,Я пробовал добавить классы доставки addind 2 следующим образом:

// HERE define your shipping classes to find
$class = 3031, 3032;

Но это ломает сайт.Поэтому я хотел бы скрыть определенную фиксированную ставку не только для обоих классов доставки 3031 и 3032.

Что я делаю неправильно?Как я могу включить 2 класса доставки, не нарушая веб-сайт?

1 Ответ

1 голос
/ 01 июня 2019

Чтобы использовать несколько классов доставки, вы должны сначала определить их в массиве и в операторе IF вы будете использовать условную функцию in_array() следующим образом:

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 classes to find
    $classes = [3031, 3032];

    // HERE define the shipping methods you want to hide
    $method_key_ids = array('flat_rate:189');

    // Checking in cart items
    foreach( $package['contents'] as $item ) {
        // If we find one of the shipping classes
        if( in_array( $item['data']->get_shipping_class_id(), $classes ) ){
            foreach( $method_key_ids as $method_key_id ){
                unset($rates[$method_key_id]); // Remove the targeted methods
            }
            break; // Stop the loop
        }
    }
    return $rates;
}

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

Иногда вам может понадобиться обновить методы доставки в районы доставки, а затем отключить / сохранить и повторно включить / сохранить методы доставки по "фиксированным ставкам".

Тема: Скрыть способы доставки для определенного класса доставки в WooCommerce

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