深入淺出 WordPress 內容類型:什麼是 Post Type ? 如何使用 ACF 6.1 建立 Custom Post Type?

什麼是 Post Type

身為一個充滿彈性的內容管理系統,WordPress 將各式不同類型的資料,以 Post Type (內容類型)來做區分,儲存在資料庫中以便取用。

在內建的 Post Type 中,常見的有文章 (post)、頁面 (page)、媒體 (attachment) 等,每一筆資料都對應具體的文本和檔案;另外像是版本修訂 (revision)、選單 (nav_menu_item) 等,屬於網站系統的設定值;更有一部分 Post Type 並未開放使用者操作和檢視,僅用以協助系統運行。這些 Post Type 各司其職,組成了 WordPress 世界豐富的生態系統。

為什麼需要自訂 Post Type (Custom Post Type)

WordPress 系統的預設環境聚焦於寫作,作為部落格網站,內建的 Post Type 能夠滿足絕大部分的需求;但如果想在 WordPress 系統中實現更豐富的功能,系統會需要處理更多不同類型的資料,內建的 Post Type 可能無法符合需求,而需要 Custom Post Type 的協助。

舉例來說,依照開發的需求和情境的不同,電商網站會需要管理產品 (Product);活動報名網站會需要管理個別活動 (Event);聯絡表單則會需要管理表單 (Form)、表單紀錄 (Submission) 等。這些資料類型自然無法透過內建的 Post Type 進行管理,需要額外自訂 Post Type。

the-beginner-guide-of-custom-post-type-2023-07-05-15-30-29

此外,透過 Custom Post Type 也能讓後台使用介面更加友善,不同的資料項目在後台能夠清楚區分;若將所有資料存於內建的文章 (post) 和 分類 (category) 中,不僅操作上不夠直覺方便、容易混淆,在開發時也會需要撰寫較為複雜的過濾條件,影響效能。

如何新增 Custom Post Type

在 WordPress 中新增 Custom Post Type,主要有兩種方法:

自行撰寫程式碼

您可以參閱 WordPress 官方文件 ,瞭解如何使用 register_post_type **** 函式及參數,在系統中註冊 Custom Post Type;或以 GenerateWP 這類半自動化的工具,協助您產生需要的程式碼。這些程式碼,直接放置在目前佈景主題的 **functions.php** 就會生效;或者利用外掛存放程式碼(例如 Code Snippets),方便作更進一步的管理。

透過外掛新增並管理

在眾多外掛工具中,Custom Post Type UI (CPT UI) 由於推出的早、免費使用,又有持續維護和更新,安裝數量是最多的。不過,最近由於 Advanced Custom Field (ACF) 6.1 新版本釋出,在免費版就能使用自訂 Post Type 與 Taxonomy 的新功能,以下我們就使用 ACF 6.1 作為示範。

https://raw.githubusercontent.com/tellustek/tellustek-official-image/main/introducing-custom-post-type-with-acf-6-1-0-2023-05-11-14-26-31.png

使用 ACF 6.1 新增 Custom Post Type

安裝並啟用 Advanced Custom Field

前往 WordPress 後台的「外掛 (Plugin)」>「安裝外掛 (Add New)」,並在右側的搜尋欄位輸入 Advanced Custom Fields,下方會出現對應的搜尋結果。點擊「立即安裝 (Install)」開始安裝程序,安裝完成後按鈕文字會變更為「啟用 (Activate)」,再次點擊按鈕啟用。

https://raw.githubusercontent.com/tellustek/tellustek-official-image/main/introducing-custom-post-type-with-acf-6-1-0-2023-05-11-15-04-46.png

新增並編輯 Custom Post Type

前往 WordPress 後台的「ACF」>「Post Types」,按下「+Add New (新增) 」按鈕。

https://raw.githubusercontent.com/tellustek/tellustek-official-image/main/introducing-custom-post-type-with-acf-6-1-0-2023-05-11-15-26-42.png

進入新增 Post Type 畫面,此處有 3 個欄位:

原始文字說明用途
Plural Label複數形態標籤表示這個 Post Type 的總稱。
Singular Label單數形態標籤表示這個 Post Type 的單筆資料。*
Post Type Key鍵值/代稱表示這個 Post Type 在系統中的唯一命名,也是網址結構中所出現的文字。僅容許英數文字、橫線及底線。

按:Plural Label 與 Singular Label 用於前台/後台介面的顯示文字,可任意輸入,亦支援中文。在拼音文字(如西歐字母等)有單數、複數型態的差別;由於中文詞彙沒有區分單複數,使用中文來命名 Post Type 時,可以使用同一個詞,沒有差別。

https://raw.githubusercontent.com/tellustek/tellustek-official-image/main/new-features-and-innovations-of-acf-6-1-0-2023-04-27-18-13-35.png

Advanced Configuration(進階設定)

此處包含更多細部設定,進一步說明可參考 官方文件

完成 Custom Post Type 註冊

填寫完畢後,按下右上角「 Save Changes」,完成新增。你會發現後台主選單,將新增一個項目,包含基本的新增、編輯、修改的功能。

Allen Chu

擅長 WordPress 網頁設計,將客製化開發實踐在 CMS 系統中。相信視覺和功能性同樣重要,希望把好的體驗帶給使用者。

想知道更多嗎?

填入常用的電子郵件,即可在第一時間獲取最新知識!

Subscription Form