wordpress网站开发:元数据(Metadata)

2018-09-1509:38:30网站建设与开发Comments2,734 views字数 2530阅读模式

学习了 WordPress 的主要内容类型,但是所有这些内容的其他额外数据呢?这就是元数据(Metadata)的用武之地了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

正如前面所说,WordPress 有四种主要的内容类型,分别存储在四个数据表中:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

  • posts
  • 用户
  • 评论
  • 链接

前三个都有分配给它们的元数据,存放于它们各自的元数据表中。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

什么是元数据(Metadata)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

元数据可描述为关于数据的数据。维基百科定义了两种类型的元数据:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

结构化的元数据(Structural metadata)是有关数据结构的设计和说明,通常叫做“关于数据容器的数据(data about the containers of data);描述性的元数据(descriptive metadata),关于应用程序数据和数据内容的单个实例。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

按照这个定义,WordPress使用描述性元数据。在wordpress中,把什么定义成数据和把什么定义成元数据是模糊不清的,定义为元数据也不等同于会被存储于元数据表中,比如:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

  • 对于posts,`post_type`是一个元数据的例子,但是它是被存储于`wp_posts`表中.
  • 分类项(Taxonomy terms),目录(categories)和标签(tags)也可以大致的定义为元数据,但是它们却被完全的分开存储在自己的数据库表格中。
  • Post数据,比如自定义的字段和额外的通过插件添加的元数据被存储于`wp_postmeta`表中。

所以除了存储在3个元数据表中的数据,明白WordPress中的元数据并不严格按照元数据的定义,这样更容易理解。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

元数据表

WordPress使用3张表存储元数据:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

  • wp_postmeta 存储关于posts的元数据(包括附件,导航菜单项和修改)。
  • wp_commentmeta 存储关于评论(comments)的元数据。
  • wp_usermeta 存储关于用户的元数据。

WordPress中唯一没有元数据的对象类型(object type)是链接。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

元数据表几乎都是相同的,都有4个字段:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

  • ID 就是元数据相关联的post,用户(user),评论(comment)的ID。
  • Meta ID指的是元数据记录的ID。
  • 键(Key)是指元键(meta key)(这个值在不同的记录中经常是重复的)。
  • 值(value)是指元值(meta value)(往往是唯一的)。

WordPress使用这种简单的结构存储大量的元数据。这意味着你用来展示和查询post,用户和注释元数据的函数是非常相似的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

WordPress存储的元数据

单一WordPress安装之间存储的元数据是不同的,因为插件和主题会添加自己的元数据,并且在一些站点中,你需要定义明确的元数据,然而其它的并不需要。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

让我们看一下元数据的一些共有的类型:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

  • 自定义字段。这个字段应用到posts,所以存储在`wp_postmeta`表中。可以使用标准的自定义字段接口或者在文章编辑页创建自己的metaboxes来添加。当你想让用户能够对一个具体的post type类型添加元数据并且你想要使这个接口尽可能好的用户体验时是非常有用的。
  • 用户元数据。 `wp_usermeta`表存储关于大部分用户的元数据比如角色(roles),权限(capabilities),仪表盘设置甚至用户的姓和名。
  • 插件和主题添加的元数据。带有评论功能的插件比如Akismet会向`wp_commentmeta`表添加元数据,然而一些允许你添加元数据到文章的插件比如SEO插件将会添加记录到`wp_postmeta`表。理论上你可以通过主题来添加元数据,但是在插件中添加更合适因为它是跟功能而不是显示相关。

当然,清单并不仅限于这些类型。事实上,所有关于post,评论或者用户的不能存储在主数据库中的数据将会存储在相关的元数据表中。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

如果你在添加新的字段来存储数据,你应该总是使用这些表而不是核心的表。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

访问和输出元数据

WordPress有 Metadata API ,使用这些API你可以添加,修改,获得,删除元数据。对每一种元数据都有一系列专门的函数可以用来输出样例文件中的元数据:你应该使用这些函数而不是其他通用的元数据函数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

每一种内容类型的元数据API函数是非常相似的并且有相同的参数列表:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

添加元数据获得元数据更新元数据删除元数据
文章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的元数据:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

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;
} 
?>

这只是一种非常简单的输出元数据的方法-有很多其他的方法在本系列教程的后面再讲解。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

总结

WordPress使用3个元数据表来存储关于3个内容类型的数据:posts,用户和评论。这些表用来存储任何没有被存储在`wp_posts`,`wp_users`和`wp_comments`核心表中的数据,而且这些表是你通过插件或者主题添加新字段时应该写入的的表。这些表以几乎完全相同的方式工作而且有非常相似的函数来添加,删除,获得元数据。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4676.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/cms/4676.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定