【问题标题】:Woocommerce Subscriptions: Exporting Subscription Order "Iteration" Number to ShipstationWoocommerce 订阅:将订阅订单“迭代”号导出到 Shipstation
【发布时间】:2017-04-22 23:55:00
【问题描述】:

这是一个糟糕的标题,对不起。不过,这是我能想到的最好的了。想要完成这个我有点难过。

相关的软件有:

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

我的最终目标是:每次订阅收费时,shipstation 都应显示该订单的订阅当前“迭代”,即作为订阅的一部分,该项目已被收费多少次。

因此,当客户最初订阅时,shipstation 应显示与该项目关联的“1”。如果订阅续订第 6 个月并按月计费,shipstation 应显示与该项目关联的“6”。

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

这个数字是通过计算相关订单的数量而产生的,所以从技术上讲,它不计算续订,但最终得出的结果是相同的。

第一个问题是它位于“订阅 ID”级别,要将其带到 Shipstation,我们必须将其移至“订单元”级别或“订单项元”级别。

由于理论上一个订单可以有多个订阅,我认为将其放在“订单元”级别是行不通的。所以我认为它必须分配给订单中实际项目的元信息。

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

所以我想我必须:

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

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

我无休止地在 Google 上搜索,发现了一些可能有助于我迈出第一步的信息,但我真的不确定我的课程。我无法将此数据作为实际的商品变化,所以我应该将其作为自定义商品属性吗?

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

提前致谢!

【问题讨论】:

    标签: php wordpress woocommerce subscriptions


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-06-15
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-11
      • 1970-01-01
      • 2017-08-05
      • 2019-04-09
      相关资源
      最近更新 更多