自动为Woocommerce中的一种送货方式申请优惠券

时间:2018-12-05 07:10:03

标签: php wordpress woocommerce cart coupon

在Woocommerce上,我正在尝试根据特定的送货方式申请优惠券。

有两种送货方式:

  1. 免费送货(3天):£0.00
  2. DPD第二天:4.00英镑

如果客户选择第二天DPD:£4.00的送货方式,则应自动应用特定的优惠券代码“ discount4”。

如果客户选择了3天免费送货:0.00英镑的送货方式,则优惠券代码不适用。

感谢您的帮助或跟踪。

1 个答案:

答案 0 :(得分:1)

如果所选的送货方式不是“免费送货”,以下代码将自动应用优惠券;如果应用了优惠券并且客户更改为“免费送货”,则以下代码将删除该优惠券:

// 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,例如 DPD次日付款:£4.00 ,例如“ flat_rate:18”,代码而不是总是以free_shipping开始的免费送货…

enter image description here