问题:
我想动态地重新定价购物车,而不重新定价商品,为客户提供一个或多个折扣。
我也问了chatgpt,但解决方案不是很好,我使用add_fee方法得到了提示。
以下是我发现的3种解决方案和副作用:
1。我找到的一些解决方案只适用于商品价格问题:用户没有意识到自己少付了钱
2。: add_fee带负数的方法问题:不推荐Woo和case vat问题
3。:创建一个负值的条目问题:不要使用百分比,如果折扣大于购物车,也有增值税问题
我在WOO代码中进行了一些研究后找到了解决方案,我希望它能帮助别人。
discount_type还可以:fixed_cart和根据购物车的值减少购物车。
例如:产品€500,优惠券€1000,只减少€500,订单可以免费完成。
Woocomerce有一个名为"woocommerce_get_shop_coupon_data"的过滤器;通过这个过滤器,我们可以在飞行中提供自己的优惠券,这些优惠券每次都要检查。
add_filter('woocommerce_get_shop_coupon_data', 'create_discount_code', 10, 3);
function create_discount_code($coupon_data, $code, $obj)
{
$cartValue = WC() && WC()->cart ? WC()->cart->get_displayed_subtotal() : 0;
if ($code == "menge") {
if ($cartValue > 1500) {
return array(
'code' => 'menge',
'discount_type' => 'percent',
'amount' => 30,
);
} else if ($cartValue > 1000) {
return array(
'code' => 'menge',
'discount_type' => 'percent',
'amount' => 20,
);
} else if ($cartValue > 500) {
return array(
'code' => 'menge',
'discount_type' => 'percent',
'amount' => 10,
);
}
else{
return false;
}
}
}
add_action( 'woocommerce_cart_updated', 'update_cart_func' );
function update_cart_func() {
if ( !WC()->cart->has_discount( 'menge' ) && WC()->cart->get_displayed_subtotal() > 500) {
WC()->cart->apply_coupon( "menge" );
}
}