如何在 WooCommerce 中自動批准訂單
已發表: 2020-09-25如果您經營的是電子商務商店,那麼您就知道該網站需要跟踪和管理訂單。 但是,這對於管理員來說可能是一項艱鉅的工作,尤其是當您的在線商店聚集了高流量時,這會導致一天內有大量訂單。
此外,您知道一旦完成結帳流程就會創建訂單。 根據訂單在付款到交付鏈中的位置為訂單分配狀態。
此外,狀態由 WooCommerce、支付網關和商店管理員設置或更改,具體取決於訂單的發起位置。
如果用戶未選擇貨到付款選項,則在完成訂單付款後。 訂單完成後,其狀態將設置為“處理中”,直到店主手動將其更改為“已完成”。 對於店主或管理員來說,這將是一項艱鉅的任務。
自動批准訂單 WooCommerce
在這個簡短的教程中,我將與您分享一個自定義 PHP 代碼,該代碼將幫助您在成功付款時自動將訂單狀態設置為已完成。 這意味著即使用戶選擇貨到付款選項,訂單狀態也會自動更改為已完成。
此外,我還將與您分享一個解決方案,該解決方案將自動將 WooCommerce 訂單狀態設置為虛擬產品的已完成。 這些產品不是有形的或可下載的。
這是因為會員訂閱可能沒有有形的形式,而是有一個到期日。 如果您處理可下載的產品,則不應包含貨到付款選項,而應僅添加一個條件來檢查訂單中的所有產品是否都是虛擬的。
既然您知道如何設置訂單狀態,那麼這裡是有關如何設置的詳細指南:
- 根據付款方式自動將 WooCommerce 訂單狀態設置為已完成。
- 對於虛擬產品,自動將 WooCommerce 訂單狀態設置為已完成。
a) 根據付款方式自動將 WooCommerce 訂單狀態設置為已完成的步驟
以下是您需要遵循的簡單步驟:
- 登錄您的 WordPress 站點並以管理員用戶身份訪問儀表板。
- 從儀表板菜單中,單擊外觀菜單 > 主題編輯器菜單。 打開主題編輯器頁面後,查找主題功能文件,我們將在其中添加根據付款方式自動將 woocommerce 訂單狀態設置為已完成的功能。
- 將以下代碼添加到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('完成'); } } }
- 要查看結果,請前往 WordPress 儀表板並單擊WooCommerce > 訂單。 您將看到訂單已設置為已完成,如下所示:
代碼如何運作
在上面的代碼中,我使用了 woocommerce_order_status_changed 掛鉤來在訂單狀態更改時調用一個函數。 它檢查訂單是否具有處理狀態並將其更改為已完成。
默認情況下,WooCommerce 有四種默認付款方式,分別是直接銀行轉賬 (bacs)、支票付款 (cheque)、貨到付款 (cod) 和 PayPal (PayPal)。 但是,您需要指定設置條件的付款方式。
b) 自動將虛擬產品的 WooCommerce 訂單狀態設置為已完成的步驟
以下是您需要遵循的步驟:
- 登錄您的 WordPress 站點並以管理員用戶身份訪問儀表板。
- 從儀表板菜單中,單擊外觀菜單 > 主題編輯器菜單。 打開主題編輯器頁面後,查找主題功能文件,我們將在其中添加自動將 woocommerce 訂單狀態設置為虛擬產品已完成的功能。
- 將以下代碼添加到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('完成'); } } }
- 結果將與第一個示例相同,因為訂單將自動設置為Completed 。
代碼如何運作
在上面的代碼中,我使用了相同的鉤子來調用函數 njengah_auto_complete_virtual。 在它檢查是否處於處理狀態後,代碼會按順序遍歷每個項目以查看是否有虛擬產品。
line_item 指的是商品,只需要將商品一一拉取來檢查是否是虛擬的。 如果沒有虛擬商品,訂單狀態不會標記為已完成。
結論
在這個簡短的教程中,我分享瞭如何自動將 WooCommerce 訂單狀態設置為已完成。 我是根據付款方式和虛擬產品完成的。
但是,根據您對商店的要求,使用第一個代碼段,您可以添加更多條件以將訂單狀態標記為已完成。 例如,如果已付款,您甚至可以將非虛擬產品的訂單狀態標記為已完成,方法是在檢查付款方式是否為虛擬產品後添加檢查。
但是,通過此代碼段,僅當訂單中的所有產品都是虛擬產品時,訂單的狀態才會設置為已完成。 我希望這篇文章提供了一個在 WooCommerce 中自動批准訂單的解決方案。
類似文章
- 如何刪除下載菜單我的帳戶頁面 WooCommerce
- 如何在 WooCommerce 結帳表單中添加額外字段
- 如何禁用運送到另一個地址選項
- 如何在 WooCommerce 中獲取付款方式 » 代碼示例
- 如何在 WooCommerce 中隱藏添加到購物車按鈕
- 如何在 WooCommerce 中添加自定義運輸方式
- 從 WooCommerce 產品頁面隱藏或刪除數量字段
- 如何逐步使用 WooCommerce 產品屬性 [完整指南]
- 如何按類別顯示 WooCommerce 產品
- 如何隱藏 WooCommerce 優惠券代碼字段
- 如何將 WooCommerce 購物車和結帳放在一頁上
- 如何在 WooCommerce 中重命名訂單狀態消息
- 如何添加產品圖片 WooCommerce 結帳頁面
- 如何使 WooCommerce 訂單需要評論
- 如何向 WooCommerce 產品添加類別
- 如何在 WooCommerce 的商店頁面中隱藏所有產品
- 如何禁用特定類別的付款方式