Woocommerce折扣优惠券定制运费

时间:2017-09-26 14:34:27

标签: php wordpress woocommerce

我在过去4小时内尝试过研究这个问题的答案,但我还没有找到答案。

我在我的woocommerce结帐页面添加了自定义费用。这是由于woocommerce航运无法提供复杂的交付计算。

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

这是设定我的自定义费用

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

这是我需要实现的目标。

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

我需要一种方法来检查提交的优惠券代码是否等于“this-string”,如果是,我需要将$ shipping Fee设置为零。

请大家帮忙。

3 个答案:

答案 0 :(得分:0)

您可以致电WC()->cart->get_applied_coupons()以获取应用于购物车的所有优惠券。然后,您可以检查您的优惠券代码是否在该数组中。像这样:

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

答案 1 :(得分: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' );

我尚未测试过的部分是否会覆盖现有的“运费”,或者您是否需要先找到删除该运费的方法。

答案 2 :(得分:0)

以下功能将为您的woo-commerce Cart添加运费,之后会增加结账价格。

// 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"];

希望这个答案有所帮助。 :)