根据购物车金额逐步折扣百分比

时间:2016-12-16 08:27:43

标签: php wordpress woocommerce cart discount

我正在尝试为WooCommerce制作一个简单的折扣代码,在购买之前为您提供百分比折扣。让我们假设,如果你添加价值100美元的产品,你可以获得2%的折扣,如果你添加价值250美元的产品,你可以得到4%等等。

我发现的唯一一件事是:

// Hook before calculate fees
add_action('woocommerce_cart_calculate_fees' , 'add_custom_fees');

/**
 * Add custom fee if more than three article
 * @param WC_Cart $cart
 */
function add_custom_fees( WC_Cart $cart ){
    if( $cart->cart_contents_count < 3 ){
        return;
    }

    // Calculate the amount to reduce
    $discount = $cart->subtotal * 0.1;
    $cart->add_fee( 'You have more than 3 items in your cart, a 10% discount has been added.', -$discount);
}

但无法设法使用修改钩子与价格的钩子。

我怎样才能做到这一点?

感谢。

1 个答案:

答案 0 :(得分:2)

以下是使用基于购物车小计excl税额的条件来添加此累进百分比作为负费用的方法,所以折扣:

add_action( 'woocommerce_cart_calculate_fees','cart_price_progressive_discount' );
function cart_price_progressive_discount() {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    $has_discount = false;
    $stotal_ext = WC()->cart->subtotal_ex_tax;

    // Discount percent based on cart amount conditions
    if( $stotal_ext >= 100 && $stotal_ext < 250  ) {
        $percent = -0.02;
        $percent_text = ' 2%';
        $has_discount =true;
    } elseif( $stotal_ext >= 250  ) {
        $percent = -0.04;
        $percent_text = ' 4%';
        $has_discount =true;
    } 
    // Calculation
    $discount = $stotal_ext * $percent;

    // Displayed text
    $discount_text = __('Discount', 'woocommerce') . $percent_text;

    if( $has_discount ) {
        WC()->cart->add_fee( $discount_text, $discount, false );
    }
    // Last argument in add fee method enable tax on calculation if "true"
}

这可以在您的活动子主题(或主题)的function.php文件中,也可以在任何插件文件中。

此代码经过测试且有效。

类似:WooCommerce - Conditional Progressive Discount based on number of items in cart

参考:WooCommerce class - WC_Cart - add_fee() method