过滤器 "woocommerce_cart_contents_weight" 不适用于装运重量

Filter "woocommerce_cart_contents_weight" not applied for shipping weight

我正在尝试将包裹重量计入购物车的总重量,以便我计算正确的运费。

我尝试在 'woocommerce_cart_contents_weight' 上添加过滤器,就像解释的那样

所以我添加了以下代码片段

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

add_filter('woocommerce_cart_contents_weight', 'add_package_weight_to_cart_contents_weight');

我还添加了一个代码段来在购物车页面上打印购物车重量,我可以看到没有应用重量过滤器:无论代码段是否处于活动状态,购物车的总重量都不会改变.

我也试过把刚好900g的东西放进购物车,加上箱子的重量,超过1kg改价,但是运费还是1kg以下的。

知道为什么没有应用它以及如何解决它吗?

您的代码有效且仅影响 WC_Cart method get_cart_contents_weight() 使用。

现在对于运输方式,由于购物车商品可以分为包裹,重量是为每个运输包裹计算的,不使用 WC_Cart method get_cart_contents_weight()。相反,它会计算每个包裹的购物车商品。

一种可能的方法应该是使用过滤器钩子 woocommerce_package_rates 根据包裹重量计算来改变成本。但这将变得更加复杂,因为您似乎正在使用第 3 方插件。