如何在 WooCommerce 中添加和編輯自定義訂單狀態

已發表: 2022-05-14

您想在 WooCommerce 中添加和編輯自定義訂單狀態嗎? 它們對於更清楚地了解客戶的訂單狀態非常有用。

默認情況下,WordPress 和 WooCommerce 不允許您添加自定義訂單狀態。 但是在代碼的幫助下,我們可以將它們添加到您的在線商店並立即進行編輯。 但是,在我們開始流程之前,讓我們看看為什麼您可能需要在 WooCommerce 中添加或編輯自定義訂單狀態。

為什麼在 WooCommerce 中添加和編輯自定義訂單狀態?

正確使用訂單狀態對於確保任何在線商店的購買過程都非常重要。 在電子商務網站中,客戶必須經過幾個步驟才能完成購買。 當然,這些額外的步驟會導致銷售額減少。

或者,我們需要處理的訂單狀態越少,電子商務商店的銷售率就越高。 最重要的是,它還將使管理整個網站變得更容易和更簡單。

但是,在所有情況下,我們都需要至少兩種類型的訂單狀態。 用戶下單成功時需要第一類訂單狀態。 它可以設置為待付款、處理或暫停。

同樣,我們還需要另一個類似於訂單已完成的訂單狀態。 在這裡,客戶可能已經付款並收到了產品。 但如果訂單因不幸事件未完成,甚至可能被設置為失敗、取消或退款。

因此,我們在 WooCommerce 中提供了以下默認訂單狀態,我們可以自由使用:

  • 待付款
  • 失敗的
  • 加工
  • 完全的
  • 等候接聽
  • 取消
  • 已退款

這些訂單狀態對於任何電子商務網站來說都足夠了。 對於普通網站可以使用的內容,它們甚至綽綽有餘。

但是,如果這些默認狀態對您來說仍然不夠,您肯定需要為您的在線商店創建一些自定義狀態。 將它們添加到您的網站肯定會讓您的客戶更清楚地了解他們的 WooCommerce 訂單狀態。 例如,如果您希望訂單狀態專門通知客戶他們的訂單正在等待呼叫,則需要添加自定義 WooCommerce 訂單狀態。

如何創建 WooCommerce 自定義訂單狀態?

WooCommerce 訂單被視為特殊的自定義帖子類型。 因此,它在數據庫的 wp_posts 表上附加了一個 post_status 值,其方式與任何其他帖子類型相同。

因此,為了將我們的自定義訂單狀態包含在可用狀態列表中,我們需要使用register_post_status() WP 內置函數。

但在我們繼續之前,請確保您以編程方式創建子主題或使用其中一個子主題插件來進行這些更改。 這可確保在更新 WordPress 主題時不會更改您對主題文件所做的自定義。 同樣,我們也會提醒您備份您的 WordPress 網站,以便在意外進行任何不必要的修改時可以恢復您的網站。

1.訪問functions.php文件

要在 WooCommerce 中創建和編輯自定義訂單狀態,您需要先訪問主題函數文件。 首先,從您的 WordPress 儀表板轉到外觀 > 主題文件編輯器。 然後,從屏幕右側的主題文件中選擇“ funtions.php ”文件。

2.將代碼添加到functions.php文件

現在,將以下腳本複制並粘貼到您的子主題的functions.php文件中。 這將創建一個名為“等待呼叫”的新自定義訂單狀態。

 //註冊新狀態
函數 register_wait_call_order_status() {
register_post_status('wc-waiting-call', array(
'標籤' => '等待呼叫',
'公共' => 真的,
'show_in_admin_status_list' => 真,
'show_in_admin_all_list' => 真,
'exclude_from_search' => 假,
'label_count' => _n_noop('等待呼叫 (%s)', '等待呼叫 (%s)' )
));
}
// 將自定義狀態添加到訂單狀態列表
函數 add_wait_call_to_order_statuses( $order_statuses ) {
$new_order_statuses = 數組();
foreach ( $order_statuses as $key => $status ) {
$new_order_statuses[ $key ] = $status;
if ('wc-on-hold' === $key) {
$new_order_statuses['wc-waiting-call'] = '等待呼叫';
}
}
返回 $new_order_statuses;
}
add_action('init', 'register_wait_call_order_status');
add_filter('wc_order_statuses', 'add_wait_call_to_order_statuses');

請注意,我們在這裡使用了幾個鉤子。 第一個是wp_init() ,它用於註冊我們的新狀態。 一旦狀態被註冊,這個函數就不再需要了,你可以在完成後移除這個鉤子和它的函數回調。

第二個是wc_order_statuses()過濾器鉤子,其中包括可用列表中的新訂單狀態。 因此可以在將其附加到來自 WooCommerce 管理儀表板的訂單時使用。

當您從 WordPress 儀表板的 WooCommerce > 訂單中​​編輯任何訂單時,您可以看到新的自定義訂單狀態。 然後,單擊狀態選項,“等待呼叫”訂單狀態將顯示在下拉菜單中。

在 woocommerce 中編輯自定義訂單狀態 創建自定義訂單狀態

在 WooCommerce 上編輯現有訂單狀態

我們還可以使用之前示例腳本wc_order_statuses()中看到的相同過濾器掛鉤來更改現有訂單狀態的名稱。

以下示例代碼將編輯兩個訂單統計信息:“處理中”和“已完成”,將它們更改為“進行中”和“已交付”:

 函數 QuadLayers_rename_status( $order_statuses ) {
foreach ( $order_statuses as $key => $status ) {
if ('wc-processing' === $key) {
$order_statuses['wc-processing'] = _x('進行中', '訂單狀態', 'woocommerce' );
}
if ('wc-completed' === $key) {
$order_statuses['wc-completed'] = _x('已交付', '訂單狀態', 'woocommerce' );
}
}
返回 $order_statuses;
}
add_filter('wc_order_statuses', 'QuadLayers_rename_status');

添加代碼後不要忘記更新文件。

就是這樣! 這是您可以在 WooCommerce 網站上編輯現有或自定義訂單狀態的方式。

在woocommerce中編輯自定義訂單狀態重命名訂單狀態woocommerce

在 WooCommerce 中刪除訂單狀態

同樣, wc_order_statuses()將有助於刪除特定的訂單狀態。 在這種情況下,我們將刪除“已退款”訂單狀態。

使用以下腳本來刪除現有訂單狀態。 這適用於默認訂單狀態和自定義訂單狀態。

 函數 QuadLayers_remove_status( $statuses ) {
if(isset($statuses['wc-refunded'])){
未設置($statuses['wc-refunded']);
}
返回$狀態;
}
add_filter('wc_order_statuses', 'QuadLayers_remove_status');

請注意,如果您刪除默認的 WooCommerce 訂單狀態,這可能會破壞與某些支付網關的集成。

結論

這些是藉助代碼在 WooCommerce 中添加和編輯自定義訂單狀態的一些不同方法。 甚至可以進一步修改它們以編輯和刪除默認的現有 WooCommerce 訂單狀態。 但是,如果默認訂單狀態不足以滿足您和客戶的需求,您只需添加新的自定義訂單狀態或編輯現有狀態。

如您所見,在您的在線商店中添加和編輯自定義訂單狀態非常容易。 但是您確實需要對如何使用 WooCommerce 鉤子有一個基本的了解。 同樣,如果您想了解有關 WooCommerce 訂單的更多信息,我們甚至提供有關如何在 WooCommerce 中測試、重複、刪除甚至自動完成訂單的詳細指南。

那麼您是否嘗試過在您的網站上編輯和添加訂單狀態? 請在評論中告訴我們。

同時,請隨時查看我們的更多帖子,這些帖子可能對您有所幫助:

  • 如何創建自定義 WordPress 插件
  • 重複訂單的最佳 WooCommerce 插件
  • 如何向 WooCommerce Checkout 添加費用