在Woocommerce上,我试图应用一种基于特定运输方法的优惠券。
有两种运输方法集:
如果客户选择DPD下一天:GB4.00送货方法,则应该自动应用特定的优惠券代码"discount4“。
如果客户选择免费送货(3天):GB0.00运输方法,则不应应用优惠券代码。
任何帮助或跟踪都将不胜感激。
发布于 2018-12-05 08:01:43
以下代码将自动应用优惠券,如果选择的船运方法不是“免费送货”,并将删除该优惠券,如果它被应用和客户更改为“免费送货”:
// Add / remove coupon based on cosen shipping
add_action( 'woocommerce_before_calculate_totals', 'adding_removing_coupon_shipping_based' );
function adding_removing_coupon_shipping_based( $cart ) {
if (is_admin() && !defined('DOING_AJAX'))
return;
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
return;
// HERE the specific coupon code
$coupon_code = 'discount4';
$coupon_code = wc_format_coupon_code( $coupon_code );
$chosen_shipping = WC()->session->get('chosen_shipping_methods')[0];
$applied_coupons = $cart->get_applied_coupons();
$is_free = strpos( $chosen_shipping, 'free_shipping' ) !== false;
$is_applied = in_array( $coupon_code, $applied_coupons );
if ( $is_applied && $is_free )
$cart->remove_coupon( $coupon_code );
elseif ( ! $is_applied && ! $is_free )
$cart->apply_coupon( $coupon_code );
}代码在您的活动子主题(或活动主题)的function.php文件中。测试和工作。
如果您有多种运输方法,您应该在您的问题中给出正确的运费ID,如"
flat_rate:18“下一天的DPD:…4.00,以便在代码中成为目标,而不是由free_shipping…开始的免费送货。

https://stackoverflow.com/questions/53626969
复制相似问题