更改购物车商品重量以更新Woocommerce中的运费

时间:2017-08-28 08:17:35

标签: php wordpress woocommerce properties cart

我正在使用Woocommerce和Extra Product Options插件创建一个非常特殊类型的电子商店,我正面临着产品重量的问题。

我想根据所选属性修改每个产品购物车的重量,但没有运气。我用它来改变体重而没有任何成功。

add_action( 'woocommerce_before_calculate_totals', 'add_custom_weight', 10, 1);
function add_custom_weight( WC_Cart $cart ) {
    if ( sizeof( $cart->cart_contents ) > 0 ) {
        foreach ( $cart->cart_contents as $cart_item_key => $values ) {
            $_product = $values['data'];

            //very simplified example - every item in cart will be 100 kg
            $values['data']->weight = '100';
        }
    }
    var_dump($cart->cart_contents_weight);
}

var_dump返回购物车的重量,不变(如果在我更改之前它是0.5,它将保持0.5),当然运费(基于重量)保持不变。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

已更新 (可能是2019年)

自WooCommerce 3+以来,您需要在 Enter a number: 12 numarr[0]: 12 Enter a number: 13 numarr[1]: 13 Enter a number: 14 numarr[2]: 14 Enter a number: -999 numarr[3]: -999 numarr[0]: 0 numarr[1]: 0 numarr[2]: 0 0 对象上使用 WC_Product 方法。以下是实现它的功能方法:

WC_Product

代码放在活动子主题(或活动主题)的functions.php文件中。经过测试和工作。