如何在结账时对woocommerce小计和总计进行折扣?

时间:2017-05-19 04:52:15

标签: php wordpress woocommerce hook-woocommerce

我们正在尝试这种类型的代码更改小计,但我们想根据小计更改总数而不在订单表中添加任何折扣字段。

// define the woocommerce_cart_subtotal callback 
function filter_woocommerce_cart_subtotal( $array, $int, $int ) { 
// make filter magic happen here... 
};       
// add the filter 
add_filter( 'woocommerce_cart_subtotal', 'filter_woocommerce_cart_subtotal', 10, 3 );

1 个答案:

答案 0 :(得分:1)

嗯,你正在使用错误的钩子。该过滤器用于更改显示子总数。

你需要的是:

add_action( 'woocommerce_calculate_totals', 'woocommerce_calculate_totals', 30 );
function woocommerce_calculate_totals( $cart ) {
    // make magic happen here... 
    // use $cart object to set or calculate anything.

    if ( 'excl' === $cart->tax_display_cart ) {
        $cart->subtotal_ex_tax  = 400;
    } else {
        $cart->subtotal = 350;
    }

}
上面的

将导致小计显示为350或400,具体取决于您的税收设置,但不管购物车中有哪些产品。因为我们在没有逻辑的情况下设置小计。添加自己的逻辑。

您也可以使用与上述相同的概念来使用woocommerce_after_calculate_totals

add_action( 'woocommerce_after_calculate_totals', 'woocommerce_after_calculate_totals', 30 );
function woocommerce_after_calculate_totals( $cart ) {
    // make magic happen here... 
    // use $cart object to set or calculate anything.

    if ( 'excl' === $cart->tax_display_cart ) {
        $cart->subtotal_ex_tax  = 400;
    } else {
        $cart->subtotal = 350;
    }
    $cart->total = 50;

}

reigelgallarde.me