如何在 WooCommerce 中自動批准訂單

已發表: 2020-09-25

自動批准訂單 WooCommerce 如果您經營的是電子商務商店,那麼您就知道該網站需要跟踪和管理訂單。 但是,這對於管理員來說可能是一項艱鉅的工作,尤其是當您的在線商店聚集了高流量時,這會導致一天內有大量訂單。

此外,您知道一旦完成結帳流程就會創建訂單。 根據訂單在付款到交付鏈中的位置為訂單分配狀態。

此外,狀態由 WooCommerce、支付網關和商店管理員設置或更改,具體取決於訂單的發起位置。

如果用戶未選擇貨到付款選項,則在完成訂單付款後。 訂單完成後,其狀態將設置為“處理中”,直到店主手動將其更改為“已完成”。 對於店主或管理員來說,這將是一項艱鉅的任務。

自動批准訂單 WooCommerce

在這個簡短的教程中,我將與您分享一個自定義 PHP 代碼,該代碼將幫助您在成功付款時自動將訂單狀態設置為已完成。 這意味著即使用戶選擇貨到付款選項,訂單狀態也會自動更改為已完成。

此外,我還將與您分享一個解決方案,該解決方案將自動將 WooCommerce 訂單狀態設置為虛擬產品的已完成。 這些產品不是有形的或可下載的。

這是因為會員訂閱可能沒有有形的形式,而是有一個到期日。 如果您處理可下載的產品,則不應包含貨到付款選項,而應僅添加一個條件來檢查訂單中的所有產品是否都是虛擬的。

既然您知道如何設置訂單狀態,那麼這裡是有關如何設置的詳細指南:

  • 根據付款方式自動將 WooCommerce 訂單狀態設置為已完成。
  • 對於虛擬產品,自動將 WooCommerce 訂單狀態設置為已完成。

a) 根據付款方式自動將 WooCommerce 訂單狀態設置為已完成的步驟

以下是您需要遵循的簡單步驟:

  1. 登錄您的 WordPress 站點並以管理員用戶身份訪問儀表板
  2. 從儀表板菜單中,單擊外觀菜單 > 主題編輯器菜單。 打開主題編輯器頁面後,查找主題功能文件,我們將在其中添加根據付款方式自動將 woocommerce 訂單狀態設置為已完成的功能。
  3. 將以下代碼添加php文件中:
 /**

根據付款方式自動將 woocommerce 訂單狀態設置為已完成的片段

*/

add_action('woocommerce_order_status_changed', 'njengah_auto_complete_by_payment_method');

功能 njengah_auto_complete_by_payment_method($order_id)

{

如果(!$order_id){

返回;

}

全球$產品;

$order = wc_get_order($order_id);

if ($order->data['status'] == 'processing') {

$payment_method=$order->get_payment_method();

if ($payment_method!="bacs")

{

$order->update_status('完成');

}

}

}
  1. 要查看結果,請前往 WordPress 儀表板並單擊WooCommerce > 訂單。 您將看到訂單已設置為已完成,如下所示: 批准的訂單

代碼如何運作

在上面的代碼中,我使用了 woocommerce_order_status_changed 掛鉤來在訂單狀態更改時調用一個函數。 它檢查訂單是否具有處理狀態並將其更改為已完成。

默認情況下,WooCommerce 有四種默認付款方式,分別是直接銀行轉賬 (bacs)、支票付款 (cheque)、貨到付款 (cod) 和 PayPal (PayPal)。 但是,您需要指定設置條件的付款方式。

b) 自動將虛擬產品的 WooCommerce 訂單狀態設置為已完成的步驟

可下載產品:自動批准訂單 WooCommerce 以下是您需要遵循的步驟:

  1. 登錄您的 WordPress 站點並以管理員用戶身份訪問儀表板
  2. 從儀表板菜單中,單擊外觀菜單 > 主題編輯器菜單。 打開主題編輯器頁面後,查找主題功能文件,我們將在其中添加自動將 woocommerce 訂單狀態設置為虛擬產品已完成的功能。
  3. 將以下代碼添加php文件中:
 /**

片段自動將 woocommerce 訂單狀態設置為虛擬產品的已完成

*/

add_action('woocommerce_order_status_changed', 'njengah_auto_complete_virtual');

函數 njengah_auto_complete_virtual($order_id)

{

如果(!$order_id){

返回;

}

全球$產品;

$order = wc_get_order($order_id);

if ($order->data['status'] == 'processing') {

$virtual_order = null;

if ( count( $order->get_items() ) > 0 ) {

foreach( $order->get_items() as $item ) {

if ('line_item' == $item['type'] ) {

$_product = $order->get_product_from_item($item);

if ( ! $_product->is_virtual() ) {

// 一旦我們找到一個非虛擬產品,就跳出循環

$virtual_order = 假;

休息;

}

別的 {

$virtual_order = 真;

}

}

}

}




// 如果都是虛擬產品,則標記為已完成

if ( $virtual_order ) {

$order->update_status('完成');

}

}

}

  1. 結果將與第一個示例相同,因為訂單將自動設置為Completed

代碼如何運作

在上面的代碼中,我使用了相同的鉤子來調用函數 njengah_auto_complete_virtual。 在它檢查是否處於處理狀態後,代碼會按順序遍歷每個項目以查看是否有虛擬產品。

line_item 指的是商品,只需要將商品一一拉取來檢查是否是虛擬的。 如果沒有虛擬商品,訂單狀態不會標記為已完成。

結論

在這個簡短的教程中,我分享瞭如何自動將 WooCommerce 訂單狀態設置為已完成。 我是根據付款方式和虛擬產品完成的。

但是,根據您對商店的要求,使用第一個代碼段,您可以添加更多條件以將訂單狀態標記為已完成。 例如,如果已付款,您甚至可以將非虛擬產品的訂單狀態標記為已完成,方法是在檢查付款方式是否為虛擬產品後添加檢查。

但是,通過此代碼段,僅當訂單中的所有產品都是虛擬產品時,訂單的狀態才會設置為已完成。 我希望這篇文章提供了一個在 WooCommerce 中自動批准訂單的解決方案。

類似文章