Добавьте несколько тарифов на доставку с помощью функции "Добавить тариф" с пользовательским идентификатором


Я создал пользовательский класс доставки для WooCommerce. В функции calculate_shipping на наш сервер отправляется запрос API с запросом о возможных способах доставки. Это может привести к одной или нескольким ставкам.

Я интегрировал это следующим образом в функцию calculate_shipping()

    // Make a shipping rate for each result
    foreach ($quote->shipping_options as $option) {

        $rate = array(
            'id' => 'my_method_'.$option->id,
            'label' => $methodNames[$option->name],
            'cost' => $option->price,
        );

        // Register the rate
        $this->add_rate($rate);
    }

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

Проблема является:

Заказ хранится с идентификатором доставки из пользовательского класса доставки и меткой выбранного тарифа.

Как программно определить, какой метод доставки был использован? Я не хочу совпадать на этикетке по очевидным причинам, и идентификатор неправильный. Могу ли я сохранить идентификатор или изменить это поведение?

Author: Mike, 2020-06-10

1 answers

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

// Make a shipping rate for each result
 foreach ($quote->shipping_options as $option) {

    $rate = array(
        'id' => 'my_method_'.$option->id,
        'label' => $methodNames[$option->name],
        'cost' => $option->price,
        'meta_data' => array(),
    );

    // Register the rate
    $this->add_rate($rate);
}

В 'meta_data' вы можете хранить в базе данных все, что захотите...

 2
Author: Alireza Sabahi, 2020-07-04 05:14:25