當(dāng)前位置:首頁(yè)>WordPress建站>WordPress開發(fā)>理解和利用 WordPress 中的元數(shù)據(jù)(Metadata)

理解和利用 WordPress 中的元數(shù)據(jù)(Metadata)

到目前為止,我們?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)載和采用本譯文。

聲明:本站所有文章,如無特殊說明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個(gè)人或組織,在未征得本站同意時(shí),禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺(tái)。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關(guān)注WordPress大學(xué)公眾號(hào) WPDAXUE
WordPress開發(fā)

理解和利用 WordPress 中的posts表

2016-5-20 10:02:05

WordPress開發(fā)

理解和利用 WordPress 中的分類法(Taxonomies)和分類項(xiàng)(Terms)

2016-5-31 10:23:59

0 條回復(fù) A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個(gè)人中心
購(gòu)物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

忻州市| 凤凰县| 玉环县| 昌宁县| 额济纳旗| 鄂伦春自治旗| 广德县| 长宁县| 香港 | 南澳县| 元阳县| 塔城市| 姚安县| 岳池县| 西丰县| 彰化县| 宜州市| 怀宁县| 邢台县| 施秉县| 南阳市| 区。| 凤翔县| 泰来县| 大邑县| 龙南县| 隆化县| 临武县| 高台县| 临漳县| 汕头市| 昌邑市| 永福县| 青海省| 徐闻县| 太白县| 阳朔县| 夹江县| 广宁县| 嵊泗县| 革吉县|