В моем файле functions.php мне нужно указать способ доставки (для этого сайта есть только один), а затем вернуть стоимость доставки (установлено несколько затрат).
Я могу видеть flat_rate
доставку, используя это:
foreach (WC()->shipping->get_shipping_methods() as $key => $value){
echo $key;
}
Так что это определенно есть.
По сути, я хочу, чтобы стоимость доставки вернулась из вызова API. У меня есть API, и все это работает. Он вызывает эту функцию, которую я где-то подобрал, на данный момент не помню:
function pc_get_shipping(){
$ret = array();
foreach( WC()->session->get('shipping_for_package_0')['rates'] as $method_id => $rate ){
if( WC()->session->get('chosen_shipping_methods')[0] == $method_id ){
$rate_label = $rate->label; // The shipping method label name
$rate_cost_excl_tax = floatval($rate->cost); // The cost excluding tax
// The taxes cost
$rate_taxes = 0;
foreach ($rate->taxes as $rate_tax)
$rate_taxes += floatval($rate_tax);
// The cost including tax
$rate_cost_incl_tax = $rate_cost_excl_tax + $rate_taxes;
$ret[] = array('label' => $rate_label, 'total' => WC()->cart->get_cart_shipping_total());
}
}
return $ret;
}
Но это дает мне просто пустой массив, вероятно, потому что WC()->session->get('shipping_for_package_0')['rates']
оценивает пустой массив.
TL: DR
Информация о доставке гостевого клиента сохраняется с помощью WC()->customer->set_shipping_address_1(wc_clean($value));
(и т. Д. Для всех значений)
Информация о доставке гостевого клиента корректно возвращается с использованием WC()->customer->get_shipping()
, поэтому я считаю, что она установлена правильно.
Способ доставки flat_rate
доступен через WC()->shipping->get_shipping_methods()
.
Как мне установить метод доставки для текущего заказа в functions.php, в методе, который будет вызываться через REST API.
Как мне получить расчетную стоимость доставки для текущего заказа в functions.php, в методе, который будет вызываться через REST API.