WooCommerce: проблемы с доставкой по таблице и округлением доставки по весу - PullRequest
0 голосов
/ 30 октября 2019

Итак, у меня проблема с использованием плагина Woo's Table Rate Shipping. Следующий код, который я вставил сюда, должен округлить вес посылки до следующего наибольшего числа. Таким образом, если корзина равна 4,5 фунта, она должна перейти к 5.

Этот код работает .... до точки. Он округляет заказ в корзине, а также при оформлении заказа, то есть до тех пор, пока вы не введете адрес. Затем он возвращается к исходному весу при доставке. Есть идеи почему?

add_filter( 'woocommerce_add_cart_item_data', 'pb_add_weight_custom_cart_item_data', 10, 3 );

function pb_add_weight_custom_cart_item_data( $cart_item_data, $product_id, $variation_id ){

 // For product variations handling
$product_id = $variation_id > 0 ? $variation_id : $product_id;

// Get an instance of the product object
$product = wc_get_product( $product_id );

// The default product weight
$cart_item_data['weight']['default'] = $product->get_weight();

// Set the new calculated weight
$cart_item_data['weight']['new'] = ceil($product->get_weight());

return $cart_item_data;
}

add_action( 'woocommerce_before_calculate_totals', 'pb_set_custom_cart_item_weight', 25, 1 );
function pb_set_custom_cart_item_weight( $cart ) {
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 ) return;
foreach( $cart->get_cart() as $cart_item ){
if ( isset($cart_item['weight']['new']) ) {
$cart_item['data']->set_weight($cart_item['weight']['new']);
}
}
}

1 Ответ

0 голосов
/ 04 ноября 2019

Даже я хочу того же, вы получили решение?

Спасибо

...