时间:2024-03-30
在本站的文章深入理解WordPress中的内容类型posttype中,我为大家介绍了WordPress的四种主要内容类型,今天我们来介绍一下和这四种内容类型相关连的附加内容,也就是元数据。WordPress数据库中有4种不同的数据类型,他们分别存储在以下4个数据表中。
posts
users
comments
links
前面的3种数据类型都有自己的元数据,并且有自己的数据表来存储这些元数据。
元数据可以理解为关于数据的数据Wikipedia定义了两种元数据:
结构化元数据是关于数据的设计和结构的数据,我们称之为”关于数据的数据”可能会更合适。描述性元数据,也就是数据另外的一部分,是数据的附加数据。
其实,我们把元数据理解为附加数据就比较好理解了。在数据库设计上,我们可以把文章的所有数据都保存在一张数据表中,获取这些数据的时候,只要知道了文章ID,根据文章ID获取文章数据表中的一行数据就可以获取文章的所有数据了,速度非常快。
但是这种设计方法存在一个问题,就是灵活性和扩展性不好,试想,如果文章的所有数据都保存在一张表中,如果我想给文章添加一些数据(比如文章发表的地点),怎么添加?难道让用户去修改数据表,这显然不太现实。
Metadata的出现就是为了解决这个问题的,Metadata相当于文章的辅助表,通过文章ID字段与主表相连接,除了文章ID,该数据表还有meta_key和meta_value这两个字段,meta_key定义了数据名称,meta_value保存着数据值。上面的例子中,我需要给文章添加一个发表地点字段,只需要添加一行meta_id为文章ID,meta_key为address,meta_value为北京的数据就行了。需要多少个数据,就添加多少行,非常灵活。
WordPress有三个Metadata数据表:
wp_postmeta
存储文章Metadata数据(包括附件,导航菜单项和版本数据)
wp_commentmeta
存储评论Metadata
wp_usermeta
存储用户Metadata
WordPress所有对象中,只有Link(链接)没有Metadata,其实个数据表已经被弃用了,在未来某个版本中会被移除。
所有Metadata数据表的数据结构几乎相同:
ID:该条记录关联的文章、评论或者用户ID
MetaID:该条记录的ID
Key:该条Metadata记录的Key
Value:该条记录的值
WordPress可以使用这个简单的结构存储大量的Metadata,这也意味着查询这些数据的功能函数都是类似的,不管是查询文章Metadata,评论Metadata或者用户Metadata。
每个WordPress站点中的Metadata可能都是不同的,因为一些主题和插件会根据需要创建自己的Metadata。让我们来看看Metadata最常见的几种使用方法。
自定义字段.文章的附加数据被存储在 wp_postmeta
数据表中,我们可以通过WordPress默认的自定义字段管理界面或创建自定义元数据盒子来添加这些数据,对于一些多用户网站,建议通过Metabox的方式添加,这样会更方面用户操作。
用户元数据. wp_usermeta
数据表包含了很多与用户有关的数据,比如用户角色,权限,仪表盘设置等。
通过主题或插件增加的元数据.处理评论数据的插件比如Akismet会添加评论元数据到wwp_commentmeta
数据表中,其他一些插件可能会添加一些元数据到文章元数据表中,比如一些SEO插件wp_postmeta,即使我们可以通过主题添加元数据,也建议通过插件添加,因为这涉及到功能而不是显示。
文章、评论和用户的数据表字段是固定的,所有在这些数据表中存储不了的和这些数据类型相关的数据,都会被存储在他们的netatada数据表中。
如果你需要为这些内容类型添加一个额外字段,你应该总是把这些字段添加在他们的元数据表中,而不是扩展这些内容类型的字段。
WordPress使用MetadataAPI增删改查元数据,API中有一个通用元数据操作函数,和针对每个内容类型特定操作函数,他们的关系是,特定函数如get_post_meta是通用操作函数get_metadata的具体化,我们看一下get_post_meta源码就明白了。
在查询中,我们尽量使用更加具体的操作函数,这样更方便,也不容易出错,他们分别是:
Copyright © 2019-2024 java.fit