使用账单地址而不是送货地址的 WooCommerce ShipStation 扩展

WooCommerce ShipStation extention using billing address instead of shipping address

WordPress 上使用 WooCommerceShipStation 插件扩展时,我 运行 遇到了一个问题,地址将导出到 ShipStation 使用WooCommerce 设置中的账单地址而不是默认地址(在我的例子中是送货地址)。

我尝试过的事情:

在与自动支持交谈时我无法找到合适的解决方案,自动支持建议通过禁用它们并使用 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');
  }
}

这会在每次履行报告 运行 时更新元数据,因此始终存在账单国家和发货国家。

这对我的情况有用,但有点不合适。如果这个问题足够普遍以保证更灵活的替代方案,我愿意接受其他方法。