我想實現購買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核心文件?