首页 > 解决方案 > 根据 WooCommerce 中的产品税等级调整运输等级

问题描述

我目前正在尝试在 WooCommerce 中对产品和运输实施一些动态征税。到目前为止,我已经使用了这种方法: WooCommerce Documentation on Tax Classes and User Roles

用于根据用户数据设置添加到购物车的产品的税级。该数据是我创建的管理区域中的自定义复选框。如果选中该复选框,则用户应获得零税率征税。

这在大多数情况下都按预期工作,但最终会产生两个我无法解决的问题。

1)结帐页面永远不会完全加载(订单摘要和付款选项面板上有不断旋转的“加载”图标)和

2) 运费税不更新。具体来说,如果我从具有销售税和运费税的税类转到零税率税,销售税会正确更新(变为无),但运费仍需缴纳税款。

我在 WooCommerce 设置中正确设置了税率(零税率没有运费),但没有变化。

我正在使用此过滤器来应用更改:

add_filter('woocommerce_product_get_tax_class', 'wc_diff_rate_for_user', 1, 2);

谁能帮我为购物车和结账设置正确的运费?

标签: phpwordpresswoocommercecarttax

解决方案


如果您希望特定用户角色免税,有一种更好的方法。该类WC_Customer有一个有趣的属性,即" is_vat_exempt"

可以使用以下方法将来自特定用户角色的所有客户设置为“免增值税”:

add_action( 'template_redirect', 'is_user_vat_exempt' );
function is_user_vat_exempt(){
    // Only for logged in users
    if ( ! is_user_logged_in() ) 
        return; 

    // Set specific user role "Vat exempt" if is not set yet
    if ( current_user_can( 'some_user_role' ) && ! WC()->customer->is_vat_exempt() ) {
        WC()->customer->set_is_vat_exempt( true );
    }   
}

代码位于您的活动子主题(或活动主题)的 function.php 文件中。测试和工作。

这将解决您的所有问题,您将需要删除不再需要的相关代码。


推荐阅读