我想要完成的事情:在 woocommerce 中,我需要在用户选择日期时检查通过日期选择器字段传递的日期,然后通过 ajax 相应地更新运输选项,这样事情喜欢包邮的可以在不合适的时候取出。
我目前知道/已经弄清楚的是:我目前有 jQuery 事件触发并通过日期发送到自定义脚本,这是我需要做的事情。我无法在 woocommerce 类中找到仅返回运输数据的函数,所以我认为我不能调用它并将其作为片段返回,就像他们已经为结帐所做的那样。
不过,我确实发现了
WC_AJAX::update_order_review()
里面有一个 Action 调用,我已经成功地将一个函数挂接到那个 Action 上,并且我已经能够触发
t( 'body' ).trigger( 'update_checkout' );
这会触发更新结帐审查 block 的操作。
我真正的问题:这一切都很好,我看起来没有朝着正确的方向前进,但我对 woocommerce 的了解不够深,不知道如何在其中获取运输方式我的钩子(Hook) Action 根据需要解除它们。有谁知道我是否可以通过 $woocommerce 全局对象获取它们,然后让 WC_AJAX 方法的其余部分读取它们?
如有任何帮助,我们将不胜感激。
** 注意:是的,我知道在 jQuery 中那是“t”而不是“$”。不是错误
最佳答案
所以,对于那些可能需要它的人来说,它需要在 woocommerce 中做一些小改动,因为它们处理购物车/结帐值输出的方式,用于运输和支付选项,但最终,我可以实现它使用 woocommerce 的钩子(Hook),插件修改很少,所以,一个非常干净的解决方案。
基本上我所做的是使用 woocommerce session 、两个 Hook 和一个刷新结帐订单审查的 javascript 触发器。
通过 WC_AJAX::update_order_review
中发生的 woocommerce_checkout_update_order_review
Hook 的组合以及使用上述 $( 'body' ).trigger( ' update_checkout' );
调用,我可以连接到更新结帐审查 block 的操作。到目前为止一切顺利。
我在这个函数中所做的是检查字段是否有值,如果有,将其保存在 WC()->session
中。然后,由于 WC_AJAX::update_order_review
调用 woocommerce_order_review()
来获取所有更新的购物车和送货方式,我查看了与该函数关联的模板并找到了另一个钩子(Hook),woocommerce_review_order_before_shipping
,它允许我在购物车模板循环之前修改送货方式,并在 wc_cart_totals_shipping_html()
中构建送货选项。
现在,我知道,您在想,等等,我需要结帐送货方式,而不是购物车送货方式,但实际上,它们似乎是一样的。
希望我浪费的时间能帮助遇到类似问题的其他人。
干杯。
关于php - Woocommerce 通过 ajax 更新结帐时的运输方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29777497/