2016-12-07 186 views
0

这是一个糟糕的标题,很抱歉。不过,这是我能想到的最好的。试图完成这一点我有点难住。Woocommerce订阅:将订购订单“Iteration”编号导出到Shipstation

软件的相关作品是:

  • Woocommerce
  • Woocommerce订阅扩展
  • Woocommerce Shipstation集成扩展

我的最终目标是:每个订阅充电时间,shipstation应该显示该订单当前的订单“​​迭代”,即该订单项目作为订阅的一部分收取了多少次。

因此,当客户最初订购时,船厂应显示与该项目相关的“1”。如果订购在第六个月进行续订并按月结算,则船舶应显示与该项目相关的“6”。

Woocommerce订阅确实跟踪这个数字,如'订阅'管理页面所示。这是this screenshot右侧突出显示的数字。

这个数字是通过计算相关订单的数量而生成的,所以它在技术上并不是计算续订的数量,但是它为此目的而制定了相同的计划。

第一个问题是,这是在'订阅id'级别上,并且要将其带到shipstation,我们必须将其移动到'订单元'级别或'订单项元'级别。

由于订单在理论上可能有多个订阅,我认为它不会将'订单元'水平。所以我认为它必须分配给订单中实际项目的元信息。

Shipstation looks like this,所以在订单级别上显示某些内容可能不太可行,当您进入“物品订购”视图时,它会列出一些信息,如SKU和变体。我不想把这个数字变成实际的变化,但是在逻辑上似乎应该有某种方式让信息显示在同一行中。

所以我想我必须:

1)在订阅购买或更新,算上相关的订单的相关联的预订数量,这在一些地方保存在“订单项目荟萃”。

2)然后每次输出适当的订单时将该信息提供给船舶。

我已经无休止地Google搜索了一下,并发现了一些可能与帮助我构建第一步相关的信息块,但我并不确定我的课程。我无法将这些数据作为实际项目变体,因此我应该将其作为自定义项目属性来完成吗?

任何帮助或指针在正确的方向将不胜感激。我有点惊讶,我找不到更多以前寻找类似功能的人。

在此先感谢!

回答

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'; 
}