【问题标题】:Woocommerce coupon rounding issueWoocommerce 优惠券四舍五入问题
【发布时间】:2018-04-29 16:27:46
【问题描述】:

在我们的商店中,我们输入含税价格。在前端我们隐藏小数(在瑞典,我们在价格中不再使用小数),但我们保留它们。这就是为什么: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 );

这适用于价格和百分比优惠券/折扣。 但是,假设我有一张固定购物车金额为 400 瑞典克朗的优惠券,当使用它时,金额改为 402 瑞典克朗。 我想这与 woo 如何应用优惠券和四舍五入过滤器有关。

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

【问题讨论】:

    标签: php wordpress woocommerce cart coupon


    【解决方案1】:

    这可以使用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 文件或任何插件文件中。

    这应该可行……

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-11
      相关资源
      最近更新 更多