我正在尝试将一个表单添加到我的结帐页面,因此当用户单击“免税”复选框时,将弹出一个文本框并询问用户免税标识号是多少 .
我把所有这些工作都很好,我甚至将'update_totals_on_change'类添加到我的表单字段中,以便更新总计 .
我的下一步是在方法上添加一个动作/过滤器,这样当'update_totals_on_change'执行时,我可以将税率设置为0,然后它将完成总计算 .
有谁知道我可以挂钩的功能?
查看WooCommerce中的checkout.js文件,他们将操作设置为'woocommerce_update_order_review'以进行ajax操作 .
我试着跟着它,但很快就迷路了 .
我想我可以通过挂钩'woocommerce_checkout_update_order_review'来添加一些帖子数据
然后挂钩到'woocommerce_before_calculate_totals'修改税收,但我不知道我需要修改什么 .
我甚至走在正确的道路上吗?
提前致谢!
4 回答
接受的解决方案对我不起作用,但我修改它以使用以下内容:
这里的关键是要理解名称以
shipping_method
开头的任何字段都将继承此更新顺序功能(这是对我不起作用的部分) . 我在http://www.affectivia.com/blog/have-a-checkbox-on-the-checkout-page-which-updates-the-order-totals/找到了这个答案因为
$cart->remove_taxes();
已弃用 . 这就是我用来代替的 .我在前端没有表格,但有一个免税的用户名片 . 这是我的解决方案 .
另外值得注意的是,
set_is_vat_exempt(true)
在美国也有效,可以免税 .好吧,我终于想出来以防万一有兴趣 .
在我的插件中,我通过勾选到此函数在订单注释后创建了一个表单:'woocommerce_before_order_notes'
我的'taxexempt_before_order_notes'功能包含:
然后最重要的woocommerce功能是:'woocommerce_checkout_update_order_review'
我只是解析了$ post_data,它是来自woocommerce中checkout.js文件的序列化表单数据,并检查我的部分表单是否填写正确 .
如果是,那么我会为用户设置免税 .
经过长时间的搜索后,我发现有一个名为remove_taxes()的cart对象的方法 . 因此,在为免税用户设置用户元数据后,这将取消税收总额 .