php-更改woocommerce订单总权重

我需要在woocommerce网站上更改订单的总重量.

例如:我的购物车中有3件商品:1-30g; 2-35; 3-35克; total = 30 35 35 = 100g,但我想将包装重量添加到总重量中(占总重量的30%).

例如:(((30 35 35)* 0.3)(30 35 35)= 130g

我可以计算出来,但是如何将总重量从100g更改为130g.

为了获得总重量,我使用get_cart_contents_weight(),但我不知道如何设置新值.

解决方法:

钩住正确的过滤器动作

让我们看一下函数get_cart_contents_weight():

public function get_cart_contents_weight() {
    $weight = 0;

    foreach ( $this->get_cart() as $cart_item_key => $values ) {
        $weight += $values['data']->get_weight() * $values['quantity'];
    }

    return apply_filters( 'woocommerce_cart_contents_weight', $weight );
}

我们可以使用一个过滤器挂钩:woocommerce_cart_contents_weight

因此,我们可以向此过滤器添加一个函数:

add_filter('woocommerce_cart_contents_weight', 'add_package_weight_to_cart_contents_weight');

function add_package_weight_to_cart_contents_weight( $weight ) {        
    $weight = $weight * 1.3; // add 30%     
    return $weight;     
}

要将包装重量分别添加到每个产品,您可以尝试以下操作:

add_filter('woocommerce_product_get_weight', 'add_package_to_product_get_weight');

function add_package_to_product_get_weight( $weight ) {
    return $weight * 1.3;
}

但不要同时使用这两种解决方案.

上一篇:php-一次将多个项目添加到WooCommerce购物车


下一篇:php-构建函数以获取WooCommerce中产品ID的产品类别ID