我想实现购买3免费1功能,所以我编写了一个脚本,检测客户是否在购物车中有3个相同的商品,并自动将另外1个商品添加到购物车。然后使用另一个钩子,我覆盖产品的价格为0在Woocommerce更改购物车产品价格
我一派溶液和所使用的相同的方法发现:
- WooCommerce: Add product to cart with price override?
- woocommerce add custom price while add to cart
这里是代码示例:
function setGiftPriceToZero($cart_object){
foreach($cart_object->cart_contents as $k=>$item):
if(isset($item['variation']['promo']) && ($item['variation']['promo']) == 'buy 3 free 1'):
$item['data']->price = 0;
endif;
endforeach;
}
add_action('woocommerce_before_calculate_totals', 'setGiftPriceToZero');
When Woo商业计算分类汇总的车,它总是在添加原价那应该是免费的产品。例如,当我加3 $ 100目到购物车,购物车小计$ 400,而不是300 $结束。
我深入挖掘了Woocommerce代码,发现在https://docs.woocommerce.com/wc-apidocs/source-class-WC_Cart.html#1139中使用了$item['data']->get_price()
,它始终返回该商品的原始价格。
有没有办法修复这个使用钩子/ apis而不是编辑Woocommerce核心文件?