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;
	}
)

目錄

發佈留言

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

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

Picture of 賴俊吾 / Oberon Lai
賴俊吾 / Oberon Lai

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

訂閱電子報

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

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

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

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

訂閱電子報

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