Как найти идентификатор класса доставки в WooCommerce? - PullRequest
0 голосов
/ 13 декабря 2018

Использование Скрыть способ доставки для определенных классов доставки в woocommerce код ответа, я пытаюсь скрыть варианты доставки в зависимости от класса доставки.

Крупные и мелкие предметы имеют собственный класс доставки на нашем сайте, и мы хотим предлагать экспресс-доставку только для мелких предметов.

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 method to hide
    $method_key_id = 'flat_rate:7';

    // Checking in cart items
    foreach( WC()->cart->get_cart() as $cart_item ){
        // If we find the shipping class
        if( $cart_item['data']->get_shipping_class_id() == $class ){
            unset($rates[$method_key_id]); // Remove the targeted method
            break; // Stop the loop
        }
    }
    return $rates;
}

Я понимаю, как реализовать код, однако яЯ не знаю, где найти идентификатор класса доставки, я могу найти только имя слаг и класс доставки

// HERE define your shipping class to find

$class = 92;

в приведенном выше примере, где я могу найти идентификатор для замены 92 ?

Заранее спасибо.

Будет

1 Ответ

0 голосов
/ 14 декабря 2018

Чтобы заставить его работать с классом доставки "Slugs" , вместо этого вы будете использовать метод WC_Product get_shipping_class():

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 SLUG
    $class_slug = 'large';

    // HERE define the shipping method to hide
    $method_key_id = 'flat_rate:7';

    // Checking in cart items
    foreach( WC()->cart->get_cart() as $cart_item ){
        // If we find the shipping class
        if( $cart_item['data']->get_shipping_class() == $class_slug ){
            unset($rates[$method_key_id]); // Remove the targeted method
            break; // Stop the loop
        }
    }
    return $rates;
}

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

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

Чтобы найти идентификаторы методов доставки и идентификаторы классов доставки, см. ниже ...


Поиск класса доставкиID.

1) В базе данных под таблицей wp_terms:

Выполните поиск по названию термина или слаге термина, и вы получите идентификатор термина (идентификатор класса доставки).

2) В настройках доставки Woocommerce, редактирующих «Единую ставку», с помощью инструмента html-инспектора вашего браузера, проверьте поле класса доставки, например:

enter image description here

В атрибуте имени импута у вас есть woocommerce_flat_rate_class_cost_64.Таким образом, 64 является идентификатором для класса доставки.


Получите идентификатор метода доставки:

Чтобы получить связанные методы доставкиидентификаторы ставок , что-то вроде flat_rate:12, проверьте с помощью инспектора кода браузера каждый связанный атрибут переключателя name, например:

enter image description here

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