文本是《理解和利用 WordPress 中的數(shù)據(jù)(共9篇)》專題的第 5 篇。閱讀本文前,建議先閱讀前面的文章:
像很多 WordPress 術(shù)語一樣,術(shù)語“posts”很容易被混淆,因為它既指一種文章類型(post type),又指存儲在特定數(shù)據(jù)表中的內(nèi)容類型(content type)。
在這里,我要澄清兩者之間的差異,并詳細(xì)說說post類型(post types)。
在本系列前面的部分,我講解了WordPress中的不同的內(nèi)容類型,它們被存儲在幾個不同的數(shù)據(jù)表中:
- 文章
- 用戶
- 評論
- 鏈接
在本教程中,我會查看更多post的細(xì)節(jié)和概述其他的post類型,他們之間的關(guān)系,怎么理解這些來幫助你使用它們。
定義posts
首先,我從定義post和它與文章(Posts)怎么區(qū)分開始。(確實這很令人迷惑,而且加一個大寫首字母并沒有讓事情更清楚):
- 一個`post`是一個存儲在`wp_table`中的內(nèi)容項,每一項都有一個`post_type`賦值給它,可能是`post`,`page`或者其他。
- 文章(Post)是一種post類型,用作博客文章或者其他項目,這取決于你的站點的類型。
`wp_table`如下圖所示:
理解嗎?如果沒有,繼續(xù)讀下去,就會更清楚!
WordPress中的post類型
WordPress有5種內(nèi)置的 post 類型 :
- 文章(Post)
- 頁面(Page)
- 附件(Attachment)
- 修訂版本(Revision)
- 導(dǎo)航菜單項(Navigation Menu Item)
另外你可以通過register_post_type() 函數(shù)添加 自定義post類型 ,這意味這你的WordPress可以有任意的你想要的post類型。每一種自定義post類型都有與內(nèi)置類型相同的狀態(tài)-經(jīng)常我會聽到有人說自定義post類型是一種文章類型,其實不是的。
我來舉例說明一下。當(dāng)寫一個自定義查詢文章的時候,你會向查詢參數(shù)添加下面的代碼:
'post_type' => 'post'
但是如果你創(chuàng)建了自定義了名為`my_post_type`的post類型,你需要添加下面的代碼到你的查詢參數(shù):
'post_type' => 'my_post_type'
你可以使用這個`post_type`參數(shù)查詢?nèi)魏蝡ost類型。甚至如果你想要的話你可以查詢多種post類型。我不會涉及更多細(xì)節(jié)因為這已經(jīng)超出了本教程的范疇,但是你可以在WordPress Codex頁面學(xué)習(xí)更多關(guān)于 WP_Query 的內(nèi)容。
理解缺省的post類型
我們來快速學(xué)習(xí)下每一種內(nèi)置的post類型,它們?nèi)绾蜗嗨坪筒煌W⒁庠谙旅娴谋碇校沂褂靡话阋饬x上的術(shù)語post來描述所有post類型的內(nèi)容。
| post類型 | 用途 | 說明 |
|---|---|---|
| Post | 博客文章或其他相似的 | 主要的post類型-在主博客頁面列出 |
| Page | 靜態(tài)頁面 | 用來單獨顯示-一般不用于存檔(盡管可以這么用) |
| Attachment | 文檔和圖片(可能附錄或不附錄到post中) | 上傳到post的媒體文件將會在它的`post_parent`字段擁有那個post的ID。通過儀表盤的媒體界面上傳的圖片的該字段為空。`guid`字段用來存儲媒體文件的url |
| Revision | 每一個post的單個的修訂 | 每一次的修訂都會附錄到post:post的`ID`會存儲在修訂的`post_parent`字段。 |
| Navigation Menu Items | 單獨的導(dǎo)航菜單項 | 每一個菜單都包含許多的導(dǎo)航項,每一個會被存儲為一個post,`menu_order`字段用來存儲關(guān)于導(dǎo)航菜單項的順序,其他的數(shù)據(jù)比如目標(biāo)(target)和父菜單項存儲為`wp_postmeta`表的記錄。 |
自定義的post類型可以注冊為與內(nèi)置post類型行為相同(除了`attachment`),但是默認(rèn)值是`post`.每一種post類型都有自己的接口。
posts之間的關(guān)系
如你從上表中看到的,`post_parent`是很重要的一個字段,它存儲著不同posts類型的關(guān)系信息。包括:
- 父頁面和子頁面
- 修訂和與此相關(guān)的post
- 附件和被上傳到的post
你可以在你的查詢中用不同的方法使用`post_parent`字段。比如查詢一個給定頁面的父頁面,你可以使用下面的方法,這里的`ID`是父頁面的ID:
'post_parent' => 'ID'
你也可以使用一個相似的查詢來顯示所有上傳到給定post的附件,或者作為代替,你可以查詢那些沒有父元素的附件(即是通過儀表盤的媒體界面直接上傳的附件)。
為實現(xiàn)這個,你可以使用下面的代碼:
'post_parent' => '0'
有很大的可能性是你永遠(yuǎn)你都不會查詢修訂,因為你只想要用戶查看發(fā)布的內(nèi)容。
你還可以使用一個值為ID數(shù)組的`post_parent_in`得到一系列文章和頁面的子元素。
總結(jié)
理解`wp_post`表和它存儲的內(nèi)容對于理解WordPress數(shù)據(jù)庫是很重要的一部分。如你看到的,`wp_post`用來存儲posts,它包含5種內(nèi)置的post類型(包括文章Post)和任意數(shù)量的你自己添加的自定義post類型。
這個表還在`post_parent`字段存儲post之間關(guān)系的數(shù)據(jù)。
原文出自:http://code.tutsplus.com/tutorials/understanding-and-working-with-posts-in-wordpress–cms-21032
由 騎著蝸牛去拉薩@wordpress大學(xué) 原創(chuàng)翻譯,未經(jīng)允許,禁止轉(zhuǎn)載和采用本譯文。
您已閱讀完《理解和利用 WordPress 中的數(shù)據(jù)(共9篇)》專題的第 5 篇。請繼續(xù)閱讀該專題下面的文章:





感謝分享