Woocommerce订阅:导出订阅订单"迭代"发货号码

时间:2016-12-07 21:24:10

标签: php wordpress woocommerce subscriptions

这是一个可怕的头衔,对不起。不过,这是我能想到的最好的。我试图做到这一点有点难过。

相关的软件包括:

  • Woocommerce
  • Woocommerce Subscriptions Extension
  • Woocommerce Shipstation集成扩展

我的最终目标是:每次订阅付费时,发货站都应显示订阅的当前"迭代"对于该订单,即该项目作为订阅的一部分收费的次数。

因此,当客户最初订阅时,shipstation应显示" 1"与该项目相关联。如果订阅续订第六个月,并按月结算,则发货站应显示" 6"与该项目相关联。

Woocommerce订阅会跟踪此号码,如“订阅”中所示。管理页面。它是this screenshot右侧突出显示的数字。

这个数字是通过计算相关订单的数量而生成的,所以它在技术上并没有计算续订次数,但为了这个目的,它最终计算出来了。

第一个问题是这是订阅ID'水平,并将其带到船舶发电站,我们必须将其转移到一个“订单”元素中。级别或订单商品元素'水平。

由于订单理论上可以在其中包含多个订阅,因此我认为将其置于“订购”元素之上是不可能的。水平。因此,我认为必须将其分配给订单中实际商品的元信息。

Shipstation looks like this,因此当您了解订购的商品时,在订单级别显示某些商品可能无法实现。'查看它确实列出了一些信息,如SKU和变化。我不想将此数字转换为实际变体,但似乎逻辑上应该有某种方式让信息显示在同一行中。

所以我想我必须:

1)在订购购买或续订时,计算相关订购的相关订单数量,并将其存储在“订单项目元”中。

2)每次导出适当的订单时,将该信息提供给shipstation。

我无休止地搜索,发现了一些可能与帮助我建立第一步相关的大量信息,但我真的不确定我的课程。我无法将此数据作为实际的商品变体,因此我应该将其作为自定义商品属性吗?

非常感谢任何正确方向的帮助或指示。我有点惊讶,因为我找不到更多以前寻找类似功能的人。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我想出来了。对于这么简单的事情,我的工作时间比它应该的时间长,但感觉很多文档都丢失了,而且我可以参考的很多其他用例涉及已弃用的函数等。

我最终把它放在'命令元'级别而不是“订单项”元级别'毕竟,因为我意识到同时购买多个订阅项目仍然会将它们捆绑到一个订单中,并且会有单一的重复订单。

对于任何可能在将来需要类似功能的人来说,这对我来说是正常的。

// woocommerce_subscription_payment_complete fires on both initial orders and renewals
add_action('woocommerce_subscription_payment_complete', 'add_iteration', 10, 2);
function add_iteration($subscription) {
  // $subscription_id is extraneous and can be removed
  $subscription_id = $subscription->id;
  // gather relevant data
  $payment_count = $subscription->get_completed_payment_count();
  $related_orders = $subscription->get_related_orders();
  $arrayKeys = array_keys($related_orders);
  $parent_order_id = end($related_orders);
  $current_order_id = $related_orders[$arrayKeys[0]];
  // add data to order meta
  update_post_meta($current_order_id, '_iterations', $payment_count);
}

// send it to shipstation
add_filter( 'woocommerce_shipstation_export_custom_field_2', 'shipstation_custom_field_2' );
function shipstation_custom_field_2() {
  return '_iterations';
}