【发布时间】:2019-03-30 18:22:43
【问题描述】:
我正在为我的 WooCommerce 商店创建一个自定义运费计算器。我需要从用户那里收集一些额外的表单数据来正确计算运费。
我已将表单字段添加到 woocommerce_checkout_after_customer_details。一旦我弄清楚结帐页面的功能,我可能可以毫不费力地将它放入购物车页面,所以让我们专注于此。
我有一个扩展 WC_Shipping_Method 的类,使用 calculate_shipping 方法,例如 this tutorial。
在该方法中,我想使用额外的表单数据(加上目的地)来计算该客户的运费。现在我只是添加了一个虚拟汇率,它会显示出来。
我还创建了一个自定义cart-shipping.php 文件,以不显示订单审查购物车中可用方法的任何输入,仅显示标签和成本。由于采摘是在我的自定义表单中进行的,因此无需在此处设置选项。
- 我这样做是对的,还是这种方法超级 hacky?
- 如果这是正确的方法,我如何访问
calculate_shipping方法中的额外表单字段?
试过了
在我的自定义表单中命名了最终选项shipping_method_*,它触发了wc-ajax=update_order_review 调用...它初始化了我的自定义运输方法类,但无论如何似乎都没有调用calculate_shipping 方法。似乎唯一一次调用此方法是当我实际将产品添加到订单中时。
也试过了
定义了我所有可能的交付选项,并将它们添加到 calculate_shipping 中,例如 $this->add_rate( $rate );。我想当购物车通过update_order_review ajax 调用更新时,我可以以某种方式选择一个(强制用户进入一个)?同样,设置选项应由用户在结帐表单上与之交互的这些字段确定。但是我还没有弄清楚如何设置该操作的运输。
【问题讨论】:
-
如果您只想从
calculate_shipping()方法中获取提交的值,那么您可以使用$_POST['field_name']访问它。但是,我想你已经知道了?.. 你知道 WooCommerce 在 WooCommerce 会话中保存 计算的 运费,并且仅在例如送货地址为时调用calculate_shipping()方法变了吗? -
@SallyCJ Sorta 现在知道了,我对此有一个单独的问题......我试图在这里弄清楚很多事情。我现在正在获取
woocommerce_checkout_update_order_review中的帖子值并将其存储在会话中,然后稍后再获取。我想我可以直接在calculate_shipping方法中获取 POST 数据,我想不出我一开始不这样做的原因。如果您想将其作为答案,我会接受。 -
我已经发布了答案。我希望你能很快看到它.. :p 但老实说,我希望它也能帮助其他人。 :)
标签: php woocommerce hook-woocommerce