php 在Woocommerce中显示购物车运输总量值

3phpmpom  于 2023-01-12  发布在  PHP
关注(0)|答案(2)|浏览(118)

我使用woocommerce为批发客户谁订购集装箱的家具-通常40英尺集装箱的体积为68立方米。
有没有一种方法可以显示在网站上的某处-也许在标题区域显示一个框与显示总立方米的产品在他们的篮子?我需要显示客户时,他们达到68立方米,让他们知道他们已经装满了一个集装箱。
如果客户试图提交少于68立方米的订单,是否有办法闪现一条消息,向他们表明他们的集装箱还有剩余空间?

sy5wg1nm

sy5wg1nm1#

这里是一个函数,将自动获得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';
ijxebb2r

ijxebb2r2#

你可以试试这样的方法:

<?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/

相关问题