文本是《理解和利用 WordPress 中的數(shù)據(jù)(共9篇)》專題的第 6 篇。閱讀本文前,建議先閱讀前面的文章:
到目前為止,我們?cè)谶@個(gè)系列中已經(jīng)學(xué)習(xí)了 WordPress 的主要內(nèi)容類型,但是所有這些內(nèi)容的其他額外數(shù)據(jù)呢?這就是元數(shù)據(jù)(Metadata)的用武之地了。
正如前面所說,WordPress 有四種主要的內(nèi)容類型,分別存儲(chǔ)在四個(gè)數(shù)據(jù)表中:
- posts
- 用戶
- 評(píng)論
- 鏈接
前三個(gè)都有分配給它們的元數(shù)據(jù),存放于它們各自的元數(shù)據(jù)表中。
什么是元數(shù)據(jù)(Metadata)
元數(shù)據(jù)可描述為關(guān)于數(shù)據(jù)的數(shù)據(jù)。維基百科定義了兩種類型的元數(shù)據(jù):
結(jié)構(gòu)化的元數(shù)據(jù)(Structural metadata)是有關(guān)數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)和說明,通常叫做“關(guān)于數(shù)據(jù)容器的數(shù)據(jù)(data about the containers of data);描述性的元數(shù)據(jù)(descriptive metadata),關(guān)于應(yīng)用程序數(shù)據(jù)和數(shù)據(jù)內(nèi)容的單個(gè)實(shí)例。
按照這個(gè)定義,WordPress使用描述性元數(shù)據(jù)。在wordpress中,把什么定義成數(shù)據(jù)和把什么定義成元數(shù)據(jù)是模糊不清的,定義為元數(shù)據(jù)也不等同于會(huì)被存儲(chǔ)于元數(shù)據(jù)表中,比如:
- 對(duì)于posts,`post_type`是一個(gè)元數(shù)據(jù)的例子,但是它是被存儲(chǔ)于`wp_posts`表中.
- 分類項(xiàng)(Taxonomy terms),目錄(categories)和標(biāo)簽(tags)也可以大致的定義為元數(shù)據(jù),但是它們卻被完全的分開存儲(chǔ)在自己的數(shù)據(jù)庫(kù)表格中。
- Post數(shù)據(jù),比如自定義的字段和額外的通過插件添加的元數(shù)據(jù)被存儲(chǔ)于`wp_postmeta`表中。
所以除了存儲(chǔ)在3個(gè)元數(shù)據(jù)表中的數(shù)據(jù),明白WordPress中的元數(shù)據(jù)并不嚴(yán)格按照元數(shù)據(jù)的定義,這樣更容易理解。
元數(shù)據(jù)表
WordPress使用3張表存儲(chǔ)元數(shù)據(jù):
wp_postmeta存儲(chǔ)關(guān)于posts的元數(shù)據(jù)(包括附件,導(dǎo)航菜單項(xiàng)和修改)。wp_commentmeta存儲(chǔ)關(guān)于評(píng)論(comments)的元數(shù)據(jù)。wp_usermeta存儲(chǔ)關(guān)于用戶的元數(shù)據(jù)。
WordPress中唯一沒有元數(shù)據(jù)的對(duì)象類型(object type)是鏈接。
元數(shù)據(jù)表幾乎都是相同的,都有4個(gè)字段:
- ID 就是元數(shù)據(jù)相關(guān)聯(lián)的post,用戶(user),評(píng)論(comment)的ID。
- Meta ID指的是元數(shù)據(jù)記錄的ID。
- 鍵(Key)是指元鍵(meta key)(這個(gè)值在不同的記錄中經(jīng)常是重復(fù)的)。
- 值(value)是指元值(meta value)(往往是唯一的)。
WordPress使用這種簡(jiǎn)單的結(jié)構(gòu)存儲(chǔ)大量的元數(shù)據(jù)。這意味著你用來展示和查詢post,用戶和注釋元數(shù)據(jù)的函數(shù)是非常相似的。
WordPress存儲(chǔ)的元數(shù)據(jù)
單一WordPress安裝之間存儲(chǔ)的元數(shù)據(jù)是不同的,因?yàn)椴寮椭黝}會(huì)添加自己的元數(shù)據(jù),并且在一些站點(diǎn)中,你需要定義明確的元數(shù)據(jù),然而其它的并不需要。
讓我們看一下元數(shù)據(jù)的一些共有的類型:
- 自定義字段。這個(gè)字段應(yīng)用到posts,所以存儲(chǔ)在`wp_postmeta`表中。可以使用標(biāo)準(zhǔn)的自定義字段接口或者在文章編輯頁(yè)創(chuàng)建自己的metaboxes來添加。當(dāng)你想讓用戶能夠?qū)σ粋€(gè)具體的post type類型添加元數(shù)據(jù)并且你想要使這個(gè)接口盡可能好的用戶體驗(yàn)時(shí)是非常有用的。
- 用戶元數(shù)據(jù)。 `wp_usermeta`表存儲(chǔ)關(guān)于大部分用戶的元數(shù)據(jù)比如角色(roles),權(quán)限(capabilities),儀表盤設(shè)置甚至用戶的姓和名。
- 插件和主題添加的元數(shù)據(jù)。帶有評(píng)論功能的插件比如Akismet會(huì)向`wp_commentmeta`表添加元數(shù)據(jù),然而一些允許你添加元數(shù)據(jù)到文章的插件比如SEO插件將會(huì)添加記錄到`wp_postmeta`表。理論上你可以通過主題來添加元數(shù)據(jù),但是在插件中添加更合適因?yàn)樗歉δ芏皇秋@示相關(guān)。
當(dāng)然,清單并不僅限于這些類型。事實(shí)上,所有關(guān)于post,評(píng)論或者用戶的不能存儲(chǔ)在主數(shù)據(jù)庫(kù)中的數(shù)據(jù)將會(huì)存儲(chǔ)在相關(guān)的元數(shù)據(jù)表中。
如果你在添加新的字段來存儲(chǔ)數(shù)據(jù),你應(yīng)該總是使用這些表而不是核心的表。
訪問和輸出元數(shù)據(jù)
WordPress有 Metadata API ,使用這些API你可以添加,修改,獲得,刪除元數(shù)據(jù)。對(duì)每一種元數(shù)據(jù)都有一系列專門的函數(shù)可以用來輸出樣例文件中的元數(shù)據(jù):你應(yīng)該使用這些函數(shù)而不是其他通用的元數(shù)據(jù)函數(shù)。
每一種內(nèi)容類型的元數(shù)據(jù)API函數(shù)是非常相似的并且有相同的參數(shù)列表:
| 添加元數(shù)據(jù) | 獲得元數(shù)據(jù) | 更新元數(shù)據(jù) | 刪除元數(shù)據(jù) | |
|---|---|---|---|---|
| 文章 | add_post_meta() |
get_post_meta() |
update_post_meta() |
delete_post_meta() |
| 用戶 | add_user_meta() |
get_user_meta() |
update_user_meta() |
delete_user_meta() |
| 評(píng)論 | add_comment_meta() |
get_comment_meta() |
update_comment_meta() |
delete_comment_meta() |
| 參數(shù) | $post_id, $meta_key, $meta_value, $unique (可選的) |
$post_id, $meta_key, $single (可選的) |
$post_id, $meta_key, $meta_value, $prev_value (可選的) |
$post_id, $meta_key, $meta_value (可選的) |
這些函數(shù)可以使用在你的樣例文件和插件中,比如在你的單文章樣例中, 你可以使用下面的函數(shù)輸出posts的元數(shù)據(jù):
<?php
$metavalue = get_post_meta( get_the_ID(), 'my_meta_key' true);
// check if the custom field has a value
if ( ! empty( $metavalue ) ) {
echo $metavalue;
}
?>
這只是一種非常簡(jiǎn)單的輸出元數(shù)據(jù)的方法-有很多其他的方法在本系列教程的后面再講解。
總結(jié)
WordPress使用3個(gè)元數(shù)據(jù)表來存儲(chǔ)關(guān)于3個(gè)內(nèi)容類型的數(shù)據(jù):posts,用戶和評(píng)論。這些表用來存儲(chǔ)任何沒有被存儲(chǔ)在`wp_posts`,`wp_users`和`wp_comments`核心表中的數(shù)據(jù),而且這些表是你通過插件或者主題添加新字段時(shí)應(yīng)該寫入的的表。這些表以幾乎完全相同的方式工作而且有非常相似的函數(shù)來添加,刪除,獲得元數(shù)據(jù)。
如上面我提到的,在WordPress中分類項(xiàng)(taxonomy term)也可以被看做另一種類型的元數(shù)據(jù),這些將是我本系列課程下一部分要涉及的內(nèi)容。
原文出自:http://code.tutsplus.com/tutorials/understanding-and-working-with-metadata-in-wordpress–cms-21034
由 騎著蝸牛去拉薩@wordpress大學(xué) 原創(chuàng)翻譯,未經(jīng)允許,禁止轉(zhuǎn)載和采用本譯文。
您已閱讀完《理解和利用 WordPress 中的數(shù)據(jù)(共9篇)》專題的第 6 篇。請(qǐng)繼續(xù)閱讀該專題下面的文章:




