【问题标题】:WooCommerce Add Fee If Coupon Applied如果应用优惠券,WooCommerce 会增加费用
【发布时间】:2018-11-11 19:36:00
【问题描述】:

如果将给定的优惠券代码(100% 折扣)应用于购物车,我希望能够添加 20 美元的固定费用。该费用也不应征税。我提供 20 美元的上门服务,因此某张优惠券可以将购物车和所有产品打折 100%,但会增加 20 美元的固定费用。非常感谢任何帮助!

JC

【问题讨论】:

  • 默认情况下,Woocommerce 中的费用行始终添加到运输行下方,并且在向 Woocommerce 添加费用时没有其他方法。只有在自定义相关模板时才能更改该行为(这是另一个问题)
  • 那太好了,但您提供的代码向 Shipping line 添加了 20 美元,而不是 Fee line。
  • 抱歉,我使用的是WC_Cart add_fee() 方法,它添加了费用而不是运输方式……没有其他方式或方法可以添加费用。您遇到的显示问题是由于您的主题、您所做的自定义或第三方插件造成的。但这不是因为我的代码。

标签: woocommerce coupon fee


【解决方案1】:

如果特定优惠券代码已应用于购物车,则以下代码将收取$20 的费用:

add_action( 'woocommerce_cart_calculate_fees','conditional_custom_fee', 10, 1 );
function conditional_custom_fee( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    // HERE set your targeted coupon code (100 % off)
    $coupon_code = 'thatsforfree';

    // Check if our targeted coupon is applied
    if( in_array( wc_format_coupon_code( $coupon_code ), $cart->get_applied_coupons() ) ){
        $title = __('Fee', 'woocommerce'); // The fee title
        $cost  = 20; // The fee amount

        // Adding the fee (not taxable)
        $cart->add_fee( $title, $cost, false );
    }
}

代码进入您的活动子主题(活动主题)的 function.php 文件中。经过测试并且可以工作。

购物车和结帐页面中的显示 (在 Woocommerce 店面主题上)

此代码使用 Woocommerce FEE API,使用 WC_Cart method add_fee() 和专用操作挂钩 woocommerce_cart_calculate_fees

【讨论】:

  • 非常感谢您的快速回复!该代码增加了 20 美元的费用,但是,它以统一费率将其添加到航运线上。有没有办法让这个节目与费用标题分开?谢谢!
  • 那么就没有办法新建一行了吗?这将给客户一种他们支付运费的印象,而运费是免费的。有点混乱。新生产线的任何解决方法?谢谢!
  • 我会接受答案,但这段代码并没有得到我想要的结果。它在航运公司中添加了费用。
  • @loictheaztec 有没有办法在你的 PHP 中添加一个 css 脚本?您的解决方案非常适合我,但我想在您的代码运行时使用 CSS 隐藏默认运输选项。谢谢