Woocommerce 优惠券四舍五入问题
Woocommerce coupon rounding issue
在我们的商店中,我们输入含税价格。在前端,我们隐藏小数(在瑞典,我们实际上不再在价格中使用小数),但在后端,我们保留小数。这就是为什么:https://krokedil.com/dont-display-prices-with-0-decimals-in-woocommerce/
我们使用上面 link 的函数在前端隐藏小数点,并且还在前端添加了一个函数来舍入优惠券。
/**
* Trim zeros in price decimals
**/
add_filter( 'woocommerce_price_trim_zeros', '__return_true' );
function iconic_was_loop_position( $position ) {
return 'woocommerce_after_shop_loop_item_title';
}
add_filter( 'iconic_was_loop_position', 'iconic_was_loop_position', 10, 1 );
/**
* Round off decimals for coupons
**/
function filter_woocommerce_coupon_get_discount_amount( $discount,
$discounting_amount, $cart_item, $single, $instance ) {
$discount = ceil( $discount );
return $discount;
}
add_filter( 'woocommerce_coupon_get_discount_amount',
'filter_woocommerce_coupon_get_discount_amount', 10, 5 );
这适用于价格和百分比 coupons/discounts。
但是,假设我有一张固定购物车金额为 SEK400 的优惠券,当使用它时金额改为 SEK402。
我想这与 woo 如何应用与舍入过滤器相结合的优惠券有关。
所以我的问题是,是否可以通过某种方式从舍入函数中排除固定购物车优惠券?
这可以使用 WC_Coupon
conditional method is_type()
轻松完成。在你的钩子函数 filter_woocommerce_coupon_get_discount_amount()
中,你将使用最后一个参数 $instance
即 if 语句中的 WC_Coupon
对象,这样:
add_filter( 'woocommerce_coupon_get_discount_amount', 'filter_woocommerce_coupon_get_discount_amount', 10, 5 );
function filter_woocommerce_coupon_get_discount_amount( $discount, $discounting_amount, $cart_item, $single, $instance ) {
// Round the discount for all other coupon types than 'fixed_cart'
if( ! $instance->is_type('fixed_cart') )
$discount = ceil( $discount );
return $discount;
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
这应该有效……
在我们的商店中,我们输入含税价格。在前端,我们隐藏小数(在瑞典,我们实际上不再在价格中使用小数),但在后端,我们保留小数。这就是为什么:https://krokedil.com/dont-display-prices-with-0-decimals-in-woocommerce/
我们使用上面 link 的函数在前端隐藏小数点,并且还在前端添加了一个函数来舍入优惠券。
/**
* Trim zeros in price decimals
**/
add_filter( 'woocommerce_price_trim_zeros', '__return_true' );
function iconic_was_loop_position( $position ) {
return 'woocommerce_after_shop_loop_item_title';
}
add_filter( 'iconic_was_loop_position', 'iconic_was_loop_position', 10, 1 );
/**
* Round off decimals for coupons
**/
function filter_woocommerce_coupon_get_discount_amount( $discount,
$discounting_amount, $cart_item, $single, $instance ) {
$discount = ceil( $discount );
return $discount;
}
add_filter( 'woocommerce_coupon_get_discount_amount',
'filter_woocommerce_coupon_get_discount_amount', 10, 5 );
这适用于价格和百分比 coupons/discounts。 但是,假设我有一张固定购物车金额为 SEK400 的优惠券,当使用它时金额改为 SEK402。 我想这与 woo 如何应用与舍入过滤器相结合的优惠券有关。
所以我的问题是,是否可以通过某种方式从舍入函数中排除固定购物车优惠券?
这可以使用 WC_Coupon
conditional method is_type()
轻松完成。在你的钩子函数 filter_woocommerce_coupon_get_discount_amount()
中,你将使用最后一个参数 $instance
即 if 语句中的 WC_Coupon
对象,这样:
add_filter( 'woocommerce_coupon_get_discount_amount', 'filter_woocommerce_coupon_get_discount_amount', 10, 5 );
function filter_woocommerce_coupon_get_discount_amount( $discount, $discounting_amount, $cart_item, $single, $instance ) {
// Round the discount for all other coupon types than 'fixed_cart'
if( ! $instance->is_type('fixed_cart') )
$discount = ceil( $discount );
return $discount;
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
这应该有效……