WooCommerce 客製化 – 新增訂單狀態

WooCommerce 內建有幾種預設的訂單狀態,但這些狀態不見得適合每個商店,因為店家通常都會有一些自己的內部流程,所以為了方便我們可以新增客製的訂單狀態,讓店家的內部流程可以更順利一點。

 

首先透過 register_post_status 這個函式來新增一個客製化訂單,另外透過 wc_order_statuses 這個 filter, 來在訂單編輯頁面中加入新的訂單狀態

在訂單編輯頁面的訂單狀態中,就可以看到新增的狀態。

但是如果要編輯訂單狀態必須一筆一筆訂單改,那也太沒有效率了,所以我們要在訂單清單中的批次處理動作中,新增我們增加的訂單狀態。

首先透過 handle_bulk_actions-edit-shop_order, 來更新選擇的訂單狀態。

另外透過 admin_notices, 來顯示你要提醒使用者的相關訊息。

如此商家就可以在訂單清單中批次更新訂單狀態了。

 

參考文章:

https://rudrastyh.com/woocommerce/bulk-change-custom-order-status.html

改變 WooCommerce 註冊使用者的預設角色

WooCommerce 預設會將註冊的使用者角色設為顧客(Customer),但有時候可能會因為一些行銷的需求,或是某種原因,希望將改變預設的使用者角色。如果你只是單純地修改一般設定中的新使用預設角色,是不會有任何作用的。

wp-new-user-default-role
設定->一般設定

不過 WooCommerce 提供了一個 filter 讓你可以改變預設的註冊使用者角色。這邊我們將新使用者的角色設為 WP 一般設定中的預設角色。或是你可以直接設定角色的ID(例如vip)。

WooCommerce 教學 – 如何正確客製化 WooCommerce

常常看到有網友詢問,要怎麼修改 WooCommerce 的某個頁面,例如結帳頁面(Checkout Page),我的帳戶頁面(My Account Page),所以特地將個人的經驗整理出來,希望大家能夠學到正確的修改方式,下次遇到別的問題時,同樣可以依循著相同的方式來修改。這些方式不只是適用在WooCommerce, 同樣的概念其實也可以套用在修改主題或是其他的插件。透過本篇文章,你將會了解到:

1.如何正確客製化 WooCommerce (Best Practice)
2.如何複寫 WooCommerce 樣板 (Templates)
3.如何透過 Action/Filter 來修改內容顯示
4.如何避免因為更新而遺失修改內容

大原則:不要直接修改 WooCommerce 的核心

所謂核心指的是 plugins/woocommerce 目錄底下所有的檔案,這點其實是是適用於所有的 WordPress 主題和插件,因為 WordPress 的主題和插件的更新是很頻繁的,如果直接修改插件本身的檔案,當你更新了新的版本時,原本的修改就會被覆蓋掉了,除非你先備份原本的版本,同時在你的修改加上註記,或是透過版本管理軟體(git/subversion)來記錄你的修改,即使如此,日後的更新絕對是你的另一個夢魘。

如果不能修改插件本身,那要如何客製化 WooCommerce 呢?

別擔心,你有的困擾,別人一定也有。

你可以透過以下兩種方式,來客製化  WooCommerce。

1.覆寫 templates

WooCommerce 的頁面都是透過樣板(templates)來呈現的,你可以在 plugins/woocommerce/templates 找到這些檔案。基本上你要修改的頁面,都可以在這邊找到。但是還記得上面說過的原則嗎?不要直接修改插件。WooCommerce 設計了一套機制,讓你可以複寫這些樣板,複寫的方式就是把templates的檔案,複製到你的主題(或子主題)目錄下,切記,複製的時候只複製你需要的檔案即可,如此可降低日後更新和維護的成本。WooCommerce 會先找主題(或子主題)下的樣板,如果不存在,就使用 WooCommerce 插件本身的樣板。

目前大多數進階的主題,為了讓 WooCommerce 的更符合主題本身的設計,都會針對 WooCommerce 進行客製化,因此你可以在主題的目錄下找到客製化的 WooCommerce 樣板,或是你可以在後台 WooCommerce->System Status 的頁面中檢視主題覆寫的樣板
override_woo

那麼多的檔案,我要改哪一個?

如果你不熟悉 WooCommerce 樣板結構,你可以透過插件來協助(像是 Display Template Name, Show Current Template 或是 WooCommerce Template Hints)
Woocommerce Template Hints 會比較直覺地顯示網頁上的內容是來自於哪個樣板,前面兩個就只會顯示這頁包含了哪些樣板,但實際上網頁內容來自哪個樣板還是要自己去找。

如果我的主題包含了舊的樣板該怎麼辦?

有時候 WooCommerce 的更新會伴隨著樣板的變動,你一樣可以在後台的 WooCommerce->System Status 中的  Templates 看到提示:

outdated_templates

若你使用的主題有提供新版,你可以直接將新版主題內的 WooCommerce 樣板複製至你的主題或子主題中(要注意別覆蓋掉之前的修改),或是主題仍沒有提供新版的樣板,你可以使用 WooCommerce 2.1 版後內建的 Template Debug Mode 來檢視你的主題與新版本的 WooCommerce 樣板的相容性。當你啟用了這個功能後,若你是以管理者身份登入,覆寫的樣板將會失效,也就是會以 WooCommerce 內建的樣板來顯示。

template_debug_tool