2016-12-07 147 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'; 
}