2017-09-17 62 views
2

在Woocommerce中,當訂單仍處於「處理」狀態時,我想自動將所有Woocommerce訂閱「擱置」而不是「活動」。一旦我將訂單標記爲「已完成」,即訂閱應更改爲「有效」。自動將Woocommerce訂閱狀態更改爲「暫停」而不是「活動」

我試過了所有我能想到的,如果有人知道如何做到這一點,請讓我知道。

我正在運行WordPress的4.8.1/Woocommerce 3.1.2/Woocommerce訂閱2.2.7 /和支付網關是條紋3.2.3。

回答

1

這可以通過兩個步驟來完成:

1)隨着woocommerce_thankyou動作鉤子鉤住一個自定義功能,當訂單有「處理」的狀態,幷包含訂閱,我們更新訂閱狀態爲「保留」。

add_action('woocommerce_thankyou', 'custom_thankyou_subscription_action', 50, 1); 
function custom_thankyou_subscription_action($order_id){ 
    if(! $order_id) return; 

    $order = wc_get_order($order_id); // Get an instance of the WC_Order object 

    // If the order has a 'processing' status and contains a subscription 
    if(wcs_order_contains_subscription($order) && $order->has_status('processing')){ 

     // Get an array of WC_Subscription objects 
     $subscriptions = wcs_get_subscriptions_for_order($order_id); 
     foreach($subscriptions as $subscription_id => $subscription){ 
      // Change the status of the WC_Subscription object 
      $subscription->update_status('on-hold'); 
     } 
    } 
} 

代碼放在您的活動子主題(或主題)的function.php文件或也以任何插件文件。

2)隨着woocommerce_order_status_completed動作鉤子鉤住一個自定義功能,當訂單狀態更改爲「已完成」,它會自動變化的預訂狀態「活動」

// When Order is "completed" auto-change the status of the WC_Subscription object to 'on-hold' 
add_action('woocommerce_order_status_completed','updating_order_status_completed_with_subscription'); 
function updating_order_status_completed_with_subscription($order_id) { 
    $order = wc_get_order($order_id); // Get an instance of the WC_Order object 

    if(wcs_order_contains_subscription($order)){ 

     // Get an array of WC_Subscription objects 
     $subscriptions = wcs_get_subscriptions_for_order($order_id); 
     foreach($subscriptions as $subscription_id => $subscription){ 
      // Change the status of the WC_Subscription object 
      $subscription->update_status('active'); 
     } 
    } 
} 

代碼會出現在您的活動子主題(或主題)的function.php文件中,也可能位於任何插件文件中。

所有代碼都在Woocommerce 3+上測試過並且可以正常工作。

+1

非常感謝!它工作完美。我非常感謝您花時間在提供解決方案的同時解釋它。 – Daniel

+0

我已閱讀有關WooCommerce訂閱狀態保留的教程。我認爲這會對你有所幫助https://www.cloudways.com/blog/woocommerce-subscription-status-on-hold/ –

相關問題