Отображение общего объема доставки корзины в Woocommerce

Я использую woocommerce для оптовых клиентов, которые заказывают контейнеры с мебелью — обычно это 40-футовые контейнеры объемом 68 кубических метров.

Есть ли способ, которым я могу показать где-нибудь на веб-сайте — может быть, в области заголовка окно с отображением общего количества м3 продуктов в их корзине? Мне нужно показать клиенту, когда он достигнет 68 м3, чтобы они знали, что они заполнили контейнер.

И есть ли способ высветить сообщение, если клиент пытается отправить заказ объемом менее 68 м3, указывая на то, что в его контейнере еще осталось место?

Любая помощь приветствуется.

1

Решение

Вы можете попробовать что-то вроде этого:

<?php
global $woocommerce;
$items = $woocommerce->cart->get_cart();
$cart_prods_m3 = array();

//LOOP ALL THE PRODUCTS IN THE CART
foreach($items as $item => $values) {
$_product =  wc_get_product( $values['data']->get_id());
//GET GET PRODUCT M3
$prod_m3 = $_product->get_length() *
$_product->get_width() *
$_product->get_height();
//MULTIPLY BY THE CART ITEM QUANTITY
//DIVIDE BY 1000000 (ONE MILLION) IF ENTERING THE SIZE IN CENTIMETERS
$prod_m3 = ($prod_m3 * $values['quantity']) / 1000000;
//PUSH RESULT TO ARRAY
array_push($cart_prods_m3, $prod_m3);
}

echo "Total of M3 in the cart: " . array_sum($cart_prods_m3);
?>

Смотрите WC () документы: https://docs.woocommerce.com/document/class-reference/

1

Другие решения

Вот функция, которая автоматически получит единицу измерения, заданную в Woocommerce, и выполнит расчет общего объема корзины:

function get_cart_volume(){
// Initializing variables
$volume = $rate = 0;

// Get the dimetion unit set in Woocommerce
$dimension_unit = get_option( 'woocommerce_dimension_unit' );

// Calculate the rate to be applied for volume in m3
if ( $dimension_unit == 'mm' ) {
$rate = pow(10, 9);
} elseif ( $dimension_unit == 'cm' ) {
$rate = pow(10, 6);
} elseif ( $dimension_unit == 'm' ) {
$rate = 1;
}

if( $rate == 0 ) return false; // Exit

// Loop through cart items
foreach(WC()->cart->get_cart() as $cart_item) {
// Get an instance of the WC_Product object and cart quantity
$product = $cart_item['data'];
$qty     = $cart_item['quantity'];

// Get product dimensions
$length = $product->get_length();
$width  = $product->get_width();
$height = $product->get_height();

// Calculations a item level
$volume += $length * $width * $height * $qty;
}
return $volume / $rate;
}

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

Пример использования вывода:

echo __('Cart volume') . ': ' . get_cart_volume() . ' m3';
2

По вопросам рекламы [email protected]