什麼是 WordPress 的 meta box?如何使用 ACF 自訂欄位?

在 WordPress 後台我們會想在 Post Type 的新增編輯頁面中加入一些自訂欄位,這時候我們就會使用到 add_meta_box 方法來新增自訂欄位,這些欄位我們就稱為 meta,而放置這些欄位的集合我們稱之為 meta box。

什麼是 WordPress Meta?

在資料庫中你會看到 post meta, user meta, term meta...等各式各樣的 meta 表格,這些表格都是用來儲存對應類型的自訂欄位。例如 Post Type 的自訂欄位資料就會儲存在 post meta 表格、Taxonomy 分類法的自訂欄位資料就會儲存在 term meta 表格裡。

我們常用來操作 post meta 的方法有 update_post_metaadd_post_metadelete_post_metaget_post_meta

方法說明
add_post_meta新增 post meta
update_post_meta更新 post meta
delete_post_meta刪除 post meta
get_post_meta取得 post meta
常用的 post meta 操作方法

WordPress 內建的 meta API 是以程式邏輯為主,但並沒有定義使用者介面的長相,為了方便我們可以借助一些現有的外掛來自訂欄位,當中最知名的外掛是 ACF (Advanced Custom Field)

ACF 自訂欄位簡單介紹

ACF 讓你可以很容易的自訂欄位,並且設定條件這些欄位要顯示在哪些頁面上。ACF 有分付費版本以及付費版本,付費版本支援的項目比起沒有付費的版本還多很多,非常推薦購買付費版本的 ACF。ACF 一共支援 29 種欄位類型,包含了單欄文字、多欄文字、下拉選單、複選、檔案、圖片、媒體庫、HTML 編輯器...等,這些 UI 的程式邏輯他也幫你寫好了,讓你省下需要自己開發的大量時間。除此之外他也有提供一系列的 API 讓你可以做操作,如果你是開發人員的話可以參考ACF 官方的教學文件

ACF 可以選擇許多不同的欄位類型

在 ACF 儲存自訂欄位資料後,原先透過 get_post_meta, get_option 取得欄位的方法統一會改為使用 ACF 提供的方法 get_field 來取得資料,當然如果你知道 meta key 或是 option name 是什麼的話,你仍然可以使用 get_post_meta 和 get_option 來取得資料,因為 ACF 的自訂欄位是完全符合 WordPress 的儲存規範將資訊儲存在 meta 和 options 表格中。

WordPress 基礎教學系列: