本文目录
[隐藏]
- 1元数据表
- 2WordPress存储的元数据
- 3访问和输出元数据
- 4总结
本文是《理解和利用 WordPress 中的数据》系列教程的第 6 部分,该系列共包含以下 9 个部分:
- 理解和利用 WordPress 中的数据(介绍)
- 理解和利用 WordPress 中的数据关系
- 理解和利用 WordPress 中的内容类型
- 理解和利用 WordPress 中的用户数据
- 理解和利用 WordPress 中的posts表
- 理解和利用 WordPress 中的元数据(Metadata)
- 理解和利用 WordPress 中的分类法(Taxonomies)和分类项(Terms)
- 理解和利用 WordPress 中的选项表
- 理解和利用 WordPress 中的数据 – 多站点
到目前为止,我们在这个系列中已经学习了 WordPress 的主要内容类型,但是所有这些内容的其他额外数据呢?这就是元数据(Metadata)的用武之地了。
正如前面所说,WordPress 有四种主要的内容类型,分别存储在四个数据表中:
- posts
- 用户
- 评论
- 链接
前三个都有分配给它们的元数据,存放于它们各自的元数据表中。
什么是元数据(Metadata)
元数据可描述为关于数据的数据。维基百科定义了两种类型的元数据:
结构化的元数据(Structural metadata)是有关数据结构的设计和说明,通常叫做“关于数据容器的数据(data about the containers of data);描述性的元数据(descriptive metadata),关于应用程序数据和数据内容的单个实例。
按照这个定义,WordPress使用描述性元数据。在wordpress中,把什么定义成数据和把什么定义成元数据是模糊不清的,定义为元数据也不等同于会被存储于元数据表中,比如:
- 对于posts,`post_type`是一个元数据的例子,但是它是被存储于`wp_posts`表中.
- 分类项(Taxonomy terms),目录(categories)和标签(tags)也可以大致的定义为元数据,但是它们却被完全的分开存储在自己的数据库表格中。
- Post数据,比如自定义的字段和额外的通过插件添加的元数据被存储于`wp_postmeta`表中。
所以除了存储在3个元数据表中的数据,明白WordPress中的元数据并不严格按照元数据的定义,这样更容易理解。
元数据表
WordPress使用3张表存储元数据:
wp_postmeta
存储关于posts的元数据(包括附件,导航菜单项和修改)。wp_commentmeta
存储关于评论(comments)的元数据。wp_usermeta
存储关于用户的元数据。
WordPress中唯一没有元数据的对象类型(object type)是链接。
元数据表几乎都是相同的,都有4个字段:
- ID 就是元数据相关联的post,用户(user),评论(comment)的ID。
- Meta ID指的是元数据记录的ID。
- 键(Key)是指元键(meta key)(这个值在不同的记录中经常是重复的)。
- 值(value)是指元值(meta value)(往往是唯一的)。
WordPress使用这种简单的结构存储大量的元数据。这意味着你用来展示和查询post,用户和注释元数据的函数是非常相似的。
WordPress存储的元数据
单一WordPress安装之间存储的元数据是不同的,因为插件和主题会添加自己的元数据,并且在一些站点中,你需要定义明确的元数据,然而其它的并不需要。
让我们看一下元数据的一些共有的类型:
- 自定义字段。这个字段应用到posts,所以存储在`wp_postmeta`表中。可以使用标准的自定义字段接口或者在文章编辑页创建自己的metaboxes来添加。当你想让用户能够对一个具体的post type类型添加元数据并且你想要使这个接口尽可能好的用户体验时是非常有用的。
- 用户元数据。 `wp_usermeta`表存储关于大部分用户的元数据比如角色(roles),权限(capabilities),仪表盘设置甚至用户的姓和名。
- 插件和主题添加的元数据。带有评论功能的插件比如Akismet会向`wp_commentmeta`表添加元数据,然而一些允许你添加元数据到文章的插件比如SEO插件将会添加记录到`wp_postmeta`表。理论上你可以通过主题来添加元数据,但是在插件中添加更合适因为它是跟功能而不是显示相关。
当然,清单并不仅限于这些类型。事实上,所有关于post,评论或者用户的不能存储在主数据库中的数据将会存储在相关的元数据表中。
如果你在添加新的字段来存储数据,你应该总是使用这些表而不是核心的表。
访问和输出元数据
WordPress有 Metadata API ,使用这些API你可以添加,修改,获得,删除元数据。对每一种元数据都有一系列专门的函数可以用来输出样例文件中的元数据:你应该使用这些函数而不是其他通用的元数据函数。
每一种内容类型的元数据API函数是非常相似的并且有相同的参数列表:
添加元数据 | 获得元数据 | 更新元数据 | 删除元数据 | |
---|---|---|---|---|
文章 | add_post_meta() |
get_post_meta() |
update_post_meta() |
delete_post_meta() |
用户 | add_user_meta() |
get_user_meta() |
update_user_meta() |
delete_user_meta() |
评论 | add_comment_meta() |
get_comment_meta() |
update_comment_meta() |
delete_comment_meta() |
参数 | $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 (可选的) |
这些函数可以使用在你的样例文件和插件中,比如在你的单文章样例中, 你可以使用下面的函数输出posts的元数据:
1 2 3 4 5 6 7 |
<?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; } ?> |
这只是一种非常简单的输出元数据的方法-有很多其他的方法在本系列教程的后面再讲解。
总结
WordPress使用3个元数据表来存储关于3个内容类型的数据:posts,用户和评论。这些表用来存储任何没有被存储在`wp_posts`,`wp_users`和`wp_comments`核心表中的数据,而且这些表是你通过插件或者主题添加新字段时应该写入的的表。这些表以几乎完全相同的方式工作而且有非常相似的函数来添加,删除,获得元数据。
如上面我提到的,在WordPress中分类项(taxonomy term)也可以被看做另一种类型的元数据,这些将是我本系列课程下一部分要涉及的内容。
原文出自:http://code.tutsplus.com/tutorials/understanding-and-working-with-metadata-in-wordpress–cms-21034
阅读该系列的其他文章: 上一篇:理解和利用 WordPress 中的posts表 下一篇:理解和利用 WordPress 中的分类法(Taxonomies)和分类项(Terms)