WooCommerce High-Performance Order Storage 高效能訂單儲存相容

目錄

一件不想面對但在今年八月就要來臨的改變:WooCommerce 訂單資料庫大改版。這次改版主要的內容是將原本儲存在 wp_postwp_postmeta 裡面的訂單資料,拆分成四個獨立的表格,分別是 wp_wc_orderswp_wc_orders_metawp_wc_order_addresses 以及 wp_wc_order_operational_data

拆出這四個資料表對於工程師來說最大的影響就是再也不能用原本 WordPress內建的 get_post_meta()update_post_meta() 等一系列操作 Post Meta 的函式來修改訂單資料,而必須要透過 WooCommerce 的 CRUD 模式來操作,具體用法可以參考官方文件

雖然訂單資料表格的轉換有段緩衝期,但從現在開始就養成 CRUD 的寫法會比保險,如果你手邊有很久以前寫的 WooCommerce 外掛,也最好把舊有的寫法替換,經過確認沒問題後,就能開啟 WooCommerce 高效能訂單儲存的設定來進行測試。

啟用步驟如下:

點選進階 > 功能,找到最下面的高效能訂單儲存,打勾後就能啟用資料表轉換,然後接下來就會看到有哪些外掛不相容:

點選管理不相容的外掛程式後,可以看到不相容外掛列表:

如果這些是你開發的外掛,然後你也確保都改全面改用 CRUD 的方法後,只要在外掛的主檔案加入以下程式碼宣告相容即可:

<?php
add_action(
	'before_woocommerce_init',
	function() {
		if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) {
			\Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true );
		}
	}
);

declare_compatibility 接受三個參數,第一個是 $feature_id,這邊用的是 custom_order_tables,未來如果有推出其他實驗功能應該還會有其他可選項目,第二個參數是外掛主檔案,第三個是宣告是否相容,因此這邊使用 true

要注意的是這個勾點不會幫你檢查程式碼是否相容高效能訂單儲存,單純就是告訴 WordPress 說我們已經檢查過可以相容,而後續要使用新的資料表或是原有的,都可以在以下畫面進行切換,萬一當出問題的時候就能換回原本的 wp_postmeta 來檢查是哪邊出問題:

順帶一提,啟用高效能訂單儲存後,WooCommerce 會在背景以排程的方式將既有的訂單資料複製到新的表格中,但因為我的本機環境沒有啟用排程,因此可以改用 WP CLI 進行手動同步,指令為 wp wc cot sync,同步完成後畫面如下:

文章標籤hpos

目錄

賴俊吾 / 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 的接案路上不孤單!