如何在结帐时对 woocommerce 小计和总计应用折扣?
How to apply discount on woocommerce subtotal and total on checkout?
我们正在尝试这种类型的代码,它会更改小计,但我们希望根据小计更改总计,而不按顺序添加任何折扣字段 table。
// 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 );
好吧,你用错了钩子。该筛选器是更改显示小计。
你需要的是:
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;
}
我们正在尝试这种类型的代码,它会更改小计,但我们希望根据小计更改总计,而不按顺序添加任何折扣字段 table。
// 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 );
好吧,你用错了钩子。该筛选器是更改显示小计。
你需要的是:
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;
}