在我们的商店,我们输入包含税的价格。在前端我们隐藏小数(在瑞典我们不再使用小数价格),但后端我们保留它们。这就是原因:https://krokedil.com/dont-display-prices-with-0-decimals-in-woocommerce/
我们使用上面链接中的功能隐藏前端的小数,并添加了一个功能来整理前端的优惠券。
/**
* 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 );
这适用于价格和百分比优惠券/折扣。 但是,假设我有一张固定购物车金额为SEK400的优惠券,使用时金额会改为SEK402。 我想这与woo如何应用优惠券和圆形过滤器有关。
所以我的问题是,是否有可能以某种方式从舍入功能中排除固定购物车优惠券?
答案 0 :(得分:1)
使用WC_Coupon
conditional method is_type()
可以非常轻松地完成此操作。在您的钩子函数filter_woocommerce_coupon_get_discount_amount()
中,您将使用if语句中的$instance
对象的最后一个参数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文件中,或者放在任何插件文件中。
这应该有用......