2016-12-07 6 views
0

これはひどいタイトルです。申し訳ありません。私が思いつくのは最高でした。私はこれを達成しようとするのが少しうまくいかない。ソフトウェアのWoocommerce Subscriptions:サブスクリプションオーダーのエクスポート "Iteration"番号をShipstationに

関連部分は以下のとおりです。

  • Woocommerce
  • Woocommerceのサブスクリプション拡張
  • Woocommerce Shipstation Integration拡張

私の最終目標である:サブスクリプションが充電されるたびに、shipstationその注文のサブスクリプションの現在の「反復」、すなわちサブスクリプションの一部としてアイテムが請求された回数を表示する必要があります。

したがって、顧客が最初に購読すると、shipstationはアイテムに関連付けられた「1」を表示する必要があります。サブスクリプションが6か月間更新され、毎月請求される場合、shipstationはそのアイテムに関連付けられた「6」を表示する必要があります。

Woocommerce Subscriptionsは、[購読]管理ページに表示されているとおり、この番号を追跡します。 this screenshotの右側にハイライト表示されている番号です。

この番号は、関連する注文の数を数えることによって生成されるため、技術的には更新回数はカウントされませんが、この目的で同じように機能します。

この最初の問題は、これが「サブスクリプションID」レベルにあり、それをshipstationに持ち込むために、「order meta」レベルまたは「order item meta」レベルに移動する必要があることです。

理論的には、複数のサブスクリプションが注文に含まれる可能性があるため、これを「オーダーメタ」レベルに置くことはできません。だから私は注文内の実際のアイテムのメタ情報に割り当てなければならないと思っています。

Shipstation looks like this、注文レベルで何かを表示することはできない可能性があります。「注文商品」ビューになるとSKUやバリエーションのような情報が表示されます。私はこの数字を実際のバリエーションに変えたくありませんが、論理的に同じ行に情報を表示する方法があるはずです。

だから私は、私が持っていると思います:

1)サブスクリプションの購入または更新時に、関連するサブスクリプションに関連した注文の数をカウントし、「注文項目メタ」で、このどこかに保管してください。

2)適切な注文を輸出するたびに、その情報をshipstationに送ります。

私は無限にグーグルで行きましたが、最初のステップを構築するのに役立つかもしれない情報がいくつか見つかりましたが、私のコースでは本当にわかりません。このデータを実際のアイテムバリエーションにすることはできません。カスタムアイテムの属性として使用する必要がありますか?

正しい方向への助けや指導をいただければ幸いです。私は少し驚いていました。以前は同様の機能を探している人が増えていました。

ありがとうございます!

答えて

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'; 
} 
関連する問題