WooCommerce 新增訂單狀態

目錄

原本以為是十分鐘就搞定的功能想不到被搞了五十分鐘,主要是卡在註冊文章狀態後少了一個環節。首先 WooCommerce 的訂單狀態是用 Post Status 來做的,套用到 WordPress 本身就是文章的發佈狀態,就是草稿、待審核、已發佈等等,由於訂單也是一種 Post Type,所以在勾點 init 使用 register_post_status() 來新增:

<?php

add_action(
	'init',
	function() {
		register_post_status(
			'wc-deliver',
			array(
				'label' => '配送中',
			)
		);
	}
)

該方法帶兩個參數,第一個是訂單狀態的代稱,第二個是屬性陣列,裡面的 label 是新的訂單狀態顯示名稱,其他參數皆採用預設值即可,結果我在訂單編輯頁一直找不到新的訂單狀態,反覆檢查文件以及看其他外掛的寫法都是這樣沒錯,問了 ChatGPT 也是給我一樣的寫法,但就是無法新增成功。

後來看了另一位大大寫的程式碼,才發現我少了關鍵的一段:在註冊 Post Status 的時候我就在想,參數裡面沒提供 Post Type 的指定,我要怎麼讓 WordPress 知道這個狀態是用在訂單上面而非一般文章,於是才找到常看到的勾點 wc_order_statuses,有這個 Filter 才可以把這個狀態指定到訂單上面:

<?php

add_filter(
	'wc_order_statuses',
	function( $statuses ) {
		$order_statuses['wc-deliver'] = '配送中';
		return $order_statuses;
	}
)

目錄

賴俊吾 / Oberon Lai
賴俊吾 / Oberon Lai

現為全職 WordPress 工程師,網站開發經歷 11 年,專攻前端工程與 WordPress 佈景主題、外掛客製化開發

訂閱電子報

Hi,我是 Oberon,我會固定在每週五早上發送接案心得以及與 WordPress 相關的電子報,同時也會分享一些實用的開發知識,讓你在 WordPress 的接案路上不孤單!

覺得文章對你有幫助再幫我鼓個掌吧!

相關文章

WooCommerce Notify 支援 Fluent Form 表單發送通知

很開心終於有客戶跟我許願新功能了,第一次加入的完整功能是讓使用 Fluent Forms 表單外掛的站長,能在表單送出後以手機簡訊...

WooCommerce 結帳頁自訂信用卡欄位

最近在接一家有站內付功能的金流商,因此需要在結帳頁整合信用卡資訊欄位,為了避免使用者輸入錯誤,會需要驗證卡號長度、到期日格式、安全...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

專注於分享 WordPress 開發、接案技巧、專案管理等自由工作者必備知識與心得

© 2023 想點創意科技有限公司

想點創意科技有限公司 | 統一編號 90516823
Designed by Hend Design | 隱私權政策

訂閱電子報

Hi,我是 Oberon,我會固定在每週五早上發送接案心得以及與 WordPress 相關的電子報,同時也會分享一些實用的開發知識,讓你在 WordPress 的接案路上不孤單!