我试图将包裹重量计入购物车的总重量,以便我可以收取正确的运费。
我尝试在“woocommerce_cart_contents_weight”上添加过滤器,如所解释的there https://stackoverflow.com/questions/40546790/change-total-woocommerce-order-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');
我还添加了一个片段来在购物车页面上打印购物车重量,并且我可以看到重量过滤器未应用:无论片段是否处于活动状态,购物车的总重量都不会改变。
我也尝试过将900克的物品放入购物车,这样,随着盒子的重量,超过1公斤并改变价格,但运费仍然是1公斤以下的价格。
知道为什么它没有被应用以及如何修复它吗?
您的代码有效并且只影响WC_Cart method get_cart_contents_weight() https://github.com/woocommerce/woocommerce/blob/4.6.0/includes/class-wc-cart.php#L659-L675 usage.
现在对于运输方式,由于购物车物品可以分为包裹,因此重量是针对每个运输包裹计算的,并且不使用WC_Cart method get_cart_contents_weight() https://github.com/woocommerce/woocommerce/blob/4.6.0/includes/class-wc-cart.php#L659-L675。相反,它会对每个包裹的购物车商品进行计算。
一种可能的方法应该是使用过滤器钩子woocommerce_package_rates
根据包裹重量计算来更改成本。但这会变得更加复杂,因为您似乎正在使用第 3 方插件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)