【问题标题】:Woocommerce discount coupon for custom shipping fee自定义运费的 Woocommerce 折扣券
【发布时间】:2017-09-26 14:34:27
【问题描述】:

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

我的 woocommerce 结帐页面添加了自定义费用。这是由于 woocommerce shipping 无法提供复杂的配送计算。

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

这是设置我的自定义费用

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

这是我需要达到的目标。

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

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

我们将不胜感激。

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      未经测试,但我认为在应用代码时您会想要做一些事情,因此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' );
      

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

      【讨论】:

      • 嗨,我试过你的代码。但它没有改变任何东西。我不必覆盖它。如果我能让它打折 $shipping_price 的价值,那将起作用。你知道我该怎么做吗?
      • 我你可以帮我创建一个普通的优惠券,折扣说.. R50 然后我就能得到 $shipping_price 的价值。
      • 我有一个想法,这就是我发布的。 :) 它未经测试...看起来参数($cooupon_code) 应该是($coupon_code) 中有错字...否则条件 IF 将永远不会匹配。见编辑。如果您启用了WP_DEBUGWP_DEBUG_LOG,这应该会显示在您的调试日志中......这通常是尝试开发自定义内容时的好主意。
      • 谢谢 Helga :) 会试一试的 :)
      【解决方案3】:

      以下功能将向您的 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"];
      

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

      【讨论】:

        猜你喜欢
        • 2015-09-08
        • 1970-01-01
        • 2014-02-12
        • 2021-01-06
        • 2015-11-13
        • 2016-11-19
        • 2019-10-11
        • 2018-03-02
        • 2021-07-23
        相关资源
        最近更新 更多