Woocommerce优惠券舍入问题

时间:2017-11-16 08:06:08

标签: php wordpress woocommerce cart coupon

在我们的商店,我们输入包含税的价格。在前端我们隐藏小数(在瑞典我们不再使用小数价格),但后端我们保留它们。这就是原因: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如何应用优惠券和圆形过滤器有关。

所以我的问题是,是否有可能以某种方式从舍入功能中排除固定购物车优惠券?

1 个答案:

答案 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文件中,或者放在任何插件文件中。

这应该有用......