使用账单地址而不是送货地址的 WooCommerce ShipStation 扩展
WooCommerce ShipStation extention using billing address instead of shipping address
在 WordPress
上使用 WooCommerce
的 ShipStation
插件扩展时,我 运行 遇到了一个问题,地址将导出到 ShipStation
使用WooCommerce
设置中的账单地址而不是默认地址(在我的例子中是送货地址)。
我尝试过的事情:
- 确保运输站在我的自定义范围内正确设置
- 确保在
WooCommerce
设置中 WooCommerce
的默认地址设置为 "Shipping"
- 确保没有对
ShipStation
挂钩或过滤器进行冲突调用
在与自动支持交谈时我无法找到合适的解决方案,自动支持建议通过禁用它们并使用 Twenty-Sevente 作为主题来禁用主题和插件冲突的正常过程。
他们没有错。只是正常需要检查基础知识。鉴于最终解决方案缺乏曝光,我认为我会 post 我的问题在这里作为答案部分的解决方案 - 希望这不是某种违反 Stack Overflow 政策的行为。答案如下:
我发现插件会在决定向 Ship Station 发送地址之前检查是否为用户设置了运送国家/地区。这通常没问题,但在我的例子中,这些国家/地区已从结帐表单中删除,因此它们从未为结帐客户设置过。这意味着当 ShipStation 暂存数据以导出到 ShipStation 时,检查将失败。
我的解决方法是将运输和账单国家/地区设置为 'US'(我的客户的原产国),当它们为空或在任何数据导出到 ShipStation 之前未定义时。由于在导出时似乎没有定义任何过滤器来进行此更改,因此我将此更新附加到我们的客户在每个装运日之前 运行 的另一个流程。
foreach ($users as $user=>$value) {
$this_user = get_user_by('id',$user);
if ($this_user->billing_country == null){
update_user_meta($this_user->ID,'billing_country','US');
}elseif (!$this_user->billing_country) {
add_user_meta($this_user->ID,'billing_country','US');
}
if ($this_user->shipping_country == null){
update_user_meta($this_user->ID,'shipping_country','US');
}elseif (!$this_user->shipping_country) {
add_user_meta($this_user->ID,'shipping_country','US');
}
}
这会在每次履行报告 运行 时更新元数据,因此始终存在账单国家和发货国家。
这对我的情况有用,但有点不合适。如果这个问题足够普遍以保证更灵活的替代方案,我愿意接受其他方法。
在 WordPress
上使用 WooCommerce
的 ShipStation
插件扩展时,我 运行 遇到了一个问题,地址将导出到 ShipStation
使用WooCommerce
设置中的账单地址而不是默认地址(在我的例子中是送货地址)。
我尝试过的事情:
- 确保运输站在我的自定义范围内正确设置
- 确保在
WooCommerce
设置中WooCommerce
的默认地址设置为 "Shipping" - 确保没有对
ShipStation
挂钩或过滤器进行冲突调用
在与自动支持交谈时我无法找到合适的解决方案,自动支持建议通过禁用它们并使用 Twenty-Sevente 作为主题来禁用主题和插件冲突的正常过程。
他们没有错。只是正常需要检查基础知识。鉴于最终解决方案缺乏曝光,我认为我会 post 我的问题在这里作为答案部分的解决方案 - 希望这不是某种违反 Stack Overflow 政策的行为。答案如下:
我发现插件会在决定向 Ship Station 发送地址之前检查是否为用户设置了运送国家/地区。这通常没问题,但在我的例子中,这些国家/地区已从结帐表单中删除,因此它们从未为结帐客户设置过。这意味着当 ShipStation 暂存数据以导出到 ShipStation 时,检查将失败。
我的解决方法是将运输和账单国家/地区设置为 'US'(我的客户的原产国),当它们为空或在任何数据导出到 ShipStation 之前未定义时。由于在导出时似乎没有定义任何过滤器来进行此更改,因此我将此更新附加到我们的客户在每个装运日之前 运行 的另一个流程。
foreach ($users as $user=>$value) {
$this_user = get_user_by('id',$user);
if ($this_user->billing_country == null){
update_user_meta($this_user->ID,'billing_country','US');
}elseif (!$this_user->billing_country) {
add_user_meta($this_user->ID,'billing_country','US');
}
if ($this_user->shipping_country == null){
update_user_meta($this_user->ID,'shipping_country','US');
}elseif (!$this_user->shipping_country) {
add_user_meta($this_user->ID,'shipping_country','US');
}
}
这会在每次履行报告 运行 时更新元数据,因此始终存在账单国家和发货国家。
这对我的情况有用,但有点不合适。如果这个问题足够普遍以保证更灵活的替代方案,我愿意接受其他方法。