php - 根据 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);
谁能帮我为购物车和结账设置正确的运费?
解决方案
如果您希望特定用户角色免税,有一种更好的方法。该类
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 文件中。测试和工作。
这将解决您的所有问题,您将需要删除不再需要的相关代码。
推荐阅读
- python - CountVectorizer 构建字典以删除多余的单词
- ruby-on-rails - rails select_tag 显示与选择值不同的选项值
- java - 如何将整数输出到 EditText 视图?
- c++ - 如何正确声明只需要 lambda 的方法?
- c# - 使用 Dapper 映射到嵌套对象
- javascript - Javascript 正则表达式用括号替换全局对象属性
- python - 打印 tkinter 代码时,我的 pycharm 控制台为空白
- c - 在目录上使用 lstat() 并得到不正确的答案
- javascript - Webpack 用 .min.js 在一个文件中编译 JS 文件?
- anaconda - Autohotkey以管理员身份运行程序不起作用