Реальный пример: клиент купил следующие товары в корзине:
- продукт A, вес: 0,2 кг, Кол-во: 2, класс доставки: БЕСПЛАТНАЯ доставка
- продуктB, вес: 0,6 кг, Кол-во: 3, класс доставки: доставка на основе веса
- продукт C, вес: 0,8 кг, Кол-во: 1, класс доставки: доставка на основе веса
Мой клиент использует плагин для доставки с табличным тарифом, он может рассчитать стоимость доставки только по общему весу содержимого корзины, в данном случае это 3,0 кг.
Но реальный платный вес составляет всего 2,6 кг ...
Обыскал вокруг и не смог найти какую-либо функцию для вычисления промежуточного итога веса товаров в корзине для определенного класса доставки, поэтому только что разработал следующую функцию, но, похоже, она не работает.Может кто-нибудь помочь улучшить эту функцию?
// calculate cart weight for certain shipping class only
if (! function_exists('get_cart_shipping_class_weight')) {
function get_cart_shipping_class_weight() {
$weight = 0;
foreach ( $this->get_cart() as $cart_item_key => $values ) {
if ( $value['data']->get_shipping_class() == 'shipping-from-XX' ) {
if ( $values['data']->has_weight() ) {
$weight += (float) $values['data']->get_weight() * $values['quantity'];
}
}
return apply_filters( 'woocommerce_cart_contents_weight', $weight );
}
}
}
// end of calculate cart weight for certain shipping class