在 WordPress 開發中,CPT(Custom Post Type,自訂文章類型) 與 Taxonomy(分類法) 是擴充網站功能的兩大基石。
如果你要寫爬蟲或外部資料匯入,就必須理解這些核心資料表的關聯,才能安全又正確地把內容塞進 WP。
🗂 WordPress 內容核心資料表
資料表 | 功能 | 與 CPT 的關係 |
---|---|---|
wp_posts | 所有文章、頁面、媒體、CPT 的主表。 | CPT 只是這裡的 post_type 不同。 |
wp_postmeta | 延伸欄位(meta_key / meta_value),ACF 也存在這裡。 | 儲存 CPT 的額外資料。 |
wp_terms | 「詞彙本體」,如「貓」、「狗」。 | 提供分類或標籤的名稱。 |
wp_term_taxonomy | 定義該 term 屬於哪個 taxonomy,例如 category 、post_tag 、或自訂 genre 。 | 決定分類法種類。 |
wp_term_relationships | 建立文章(object_id)與 taxonomy 的關聯。 | 讓某篇 CPT 被歸類到一個或多個 term。 |
wp_users | 作者(使用者)。 | wp_posts.post_author 指向這裡。 |
wp_usermeta | 使用者自訂欄位。 | 通常不直接影響 CPT。 |
📝 CPT(自訂文章類型)
預設有:post
(文章)、page
(頁面)、attachment
(媒體)。
你可以 register_post_type('movie', ...)
來新增,例如 movie
、product
、event
…
所有 CPT 資料都存在 wp_posts
,靠 post_type
區分
post_type | 說明 |
---|---|
post | 一般文章 |
page | 靜態頁面 |
attachment | 媒體檔案 |
product | 商品(WooCommerce) |
manual | 自訂文章類型「使用教學」 範例網站: WordPress 操作教學 https://orca-biz.com/manual |
service | 自訂文章類型「服務項目」 範例網站: 診療項目 https://ivftaipei.tw/services |
🏷 分類法(Taxonomy)
WordPress 的分類系統其實是 Terms + Taxonomies 的組合。
- Term = 單一詞彙(例如「科幻」、「浪漫」)。
- Taxonomy = 分類法,規定這些詞彙的用途。
系統內建的兩種 taxonomy
category
(分類)post_tag
(標籤)
可以自訂 taxonomy
- 例如:
genre
(電影類型)、brand
(品牌)、location
(地區)
資料表 | 關鍵欄位 | 說明 |
---|---|---|
wp_terms | term_id , name , slug | 存放詞彙本體(例如「科幻」)。 |
wp_term_taxonomy | term_taxonomy_id , term_id , taxonomy | 定義該詞彙屬於哪個分類法(例如 taxonomy=genre)。 |
wp_term_relationships | object_id , term_taxonomy_id | 把文章(或 CPT)與 term 關聯起來。 |
wp_termmeta | meta_key , meta_value | term 的額外資訊。 |
🔗 CPT × Taxonomy 關聯範例
假設我們有一個 自定文章類型(CPT)叫 movie
,並且定義一個自訂 分類法(taxonomy)叫 movie_genre
。
流程會是:
wp_posts
新增一筆文章:post_type = movie
wp_terms
新增 term:「科幻」wp_term_taxonomy
建立:「term_id=10, taxonomy=move_genre」wp_term_relationships
關聯:「object_id=123(電影文章), term_taxonomy_id=10」
階段 | 範例資料 |
---|---|
wp_posts | ID=123, post_title=”Inception”, post_type=”movie” |
wp_terms | term_id=10, name=”科幻”, slug=”sci-fi” |
wp_term_taxonomy | term_taxonomy_id=55, term_id=10, taxonomy=”move_genre” |
wp_term_relationships | object_id=123, term_taxonomy_id=55 |
結果:電影 Inception 被歸類到「科幻」分類法。
Tips: 我習慣的方法是自定的分類法的我習慣跟關連的CPT的命名規則有一致性,比較不會混亂。但顯示網址是可以額外指定的
例如:
極簡風居家裝潢平台,新增一個建案設計作品(constructions)
https://1688ggf.com.tw/constructions
新增一個分類法,代表建案作品的分類:constructions_cat,但顯示網址為constructions-cat
https://1688ggf.com.tw/constructions-cat/%e5%8c%97%e9%83%a8%e5%9c%b0%e5%8d%80