2017-09-26 93 views
0

我已经试过在过去的4个小时里为这个问题寻找答案,我还没有设法找到答案。定制运费的Woocommerce折扣优惠券

我有一个自定义费用添加到我的woocommerce结帐页面。这是由于woocommerce shipping无法提供的复杂的交付计算。

我现在需要创建一张优惠券,以便将此自定义费用设置为零,如果输入优惠券。

这是我的设置我的自定义费用

WC()->cart->add_fee(__('Shipping', 'woocommerce'), $shipping_price); 

这是我需要实现。

if($coupon_code == "this-string"){ 
$shipping_price = 0; 
} 

我需要一种方法来检查,如果提交的优惠券代码等于“此字符串”,如果是,我需要$运输费用为零。

请大家帮忙,谢谢。

回答

0

以下功能将增加运费到您的woo-commerce购物车,这会增加结帐价格。

// ADD SHIPPING COST 

function woo_add_cart_fee() { 

    WC()->cart->add_fee(__('Shipping', 'woocommerce'), 100); 

} 

add_action('woocommerce_cart_calculate_fees', 'woo_add_cart_fee'); 

如果你想定制的优惠券应用到运输费用,你可以做沿着这

// ADD SHIPPING COST 

function woo_add_cart_fee() { 

    $custom_coupon = $_GET["coupon_name"]; 

    if ($custom_coupon = 'discount_code_half') { 

     WC()->cart->add_fee(__('Shipping', 'woocommerce'), 100); 

    }elseif ($custom_coupon = 'discount_code_more_than_half') { 

     WC()->cart->add_fee(__('Shipping', 'woocommerce'), 50); 

    }elseif ($custom_coupon = 'discount_code_free') { 

     WC()->cart->add_fee(__('Shipping', 'woocommerce'), 0); 

    }else (! $custom_coupon) { 

     WC()->cart->add_fee(__('Shipping', 'woocommerce'), 200); 

    } 
} 
add_action('woocommerce_cart_calculate_fees', 'woo_add_cart_fee');  

线的东西对于这种方法工作,你需要有一个优惠券按钮提交购物车页面的优惠券名称。

无论是从上一页还是您可以提交到它所在的同一页面。无论哪种方式您的网页将不得不刷新,所以你可以使用

$custom_coupon = $_GET["coupon_name"]; 

希望此回答可以帮助。 :)

0

您可以拨打WC()->cart->get_applied_coupons()以获取应用于购物车的所有优惠券。然后您可以检查您的优惠券代码是否在该阵列中。事情是这样的:

if(in_array($coupon_code, WC()->cart->get_applied_coupons())) { 
    // Do something 
} 
0

未经检验的,但我认为你会希望在应用代码时做一些事情,所以woocommerce_applied_coupon钩子是相关的。

function so_46429329_applied_coupon($coupon_code) { 
    if($coupon_code == "this-string"){ 
     $shipping_price = 0; 
     WC()->cart->add_fee(__('Shipping', 'woocommerce'), $shipping_price); 
    } 
} 
add_action('woocommerce_applied_coupon', 'so_46429329_applied_coupon'); 

,我还没有测试的部分是,这是否会覆盖现有的“送货费”或者,如果你需要找到一种方法,首先删除。

+0

嗨我试过你的代码。但它没有改变任何东西。我不必重写它。如果我能得到它可以折扣$ shipping_price的价值将工作。你知道我该怎么做吗? –

+0

我可以帮助我创建一个常规优惠券,折扣说.. R50然后我将能够在$ shipping_price的价值。 –

+0

我有一个想法,这就是我发布。 :)它是未经测试的......看起来在参数'($ cooupon_code)'应该是'($ coupon_code)''有一个输入错误...否则条件IF将永远不匹配。查看编辑。如果您启用了“WP_DEBUG”和“WP_DEBUG_LOG”,那么这应该显示在您的调试日志中......当尝试开发自定义功能时,这通常是一个好主意。 – helgatheviking

相关问题