【发布时间】:2021-11-12 17:07:42
【问题描述】:
我在帐单地址和送货地址中添加了几个额外的字段。其中之一是折扣,只能由管理员添加(对其他人隐藏)。不同的送货地址有不同的折扣(我正在使用一种为每位客户保存多个地址的暴跌)。
结帐时,我想加载该送货地址的折扣。我正在通过 ajax 调用一个方法(还有其他字段在更改时也会更新运输方式和支付网关),效果很好。对于这些字段,我只是通过 JS 将它们的值传递给 PHP,方法是从表单中获取它们。我不能因为折扣而这样做,因为有人可能只是打开开发人员工具并手动更改折扣。我需要从数据库中获取它。
在卡第一次加载时调用的那个方法中,我尝试按如下方式获取地址:
WC()->order->get_address('shipping');
但我得到一个错误,好像该方法不存在。
And WC()->order 返回空。
我加载了WC()->customer,我可以在那里看到它,但它隐藏在一些非常深的嵌套对象和数组中,你可以看出它们会因客户而异。而WC()->session 只有默认地址字段(不是我的自定义字段)。
有什么想法吗?
【问题讨论】:
-
嗨,你试过
WC()->customer->get_shipping_address();吗? -
谢谢。问题是,由于我使用的是多地址插件,我需要知道正在选择哪个地址。我通过 ajax 发送结帐表单中选择的当前地址找到了解决方案,并使用该地址检查客户元数据以找到具有相应折扣的正确地址。
标签: woocommerce