WordPress 使用 wp_users 数据表存储用户的主要数据,该数据表结构类似于wp_posts 和 wp_comments 数据表,存储的是需要经常访问的用户数据,该数据表的结构以及该数据表与其他数据表的关系如下:

WordPress 用户数据表关系(点击查看大图)

同时,WordPress 把一些附加用户数据保存在了其他数据表中,包含附加用户数据的有以下两个数据表:

  • 附加用户属性数据保存在 wp_usermeta 数据表中。
  • 在评论中,未登录用户的数据保存在wp_comments数据表中。

接下来,我们来看一下怎么访问这些数据。

wp_users 数据表

wp_users 数据表中存储着关于每个用户的核心数据,该数据表的字段如下:

字段 存储内容 注意事项
ID 用户 ID 自增
user_login 用户名 必需
user_pass 密码 如果没有填写,则自动生成
user_nicename 昵称 如果没有填写,则自动生成
user_email 邮件地址 必需
user_url 网址 非必须
user_registered 用户注册的日期和时间 自动生成
user_activation_key 用户激活密钥 自动生成
user_status 以数字保存的用户状态,表示用户是否已经通过邮件确认注册。 自动生成
display_name 公开显示为名称 如果没有填写,则自动生成

如上表所示,除了一个字段 (user_url) ,其他字段要么是必须填写的,要么就是自动生成的。

用户元数据表

和 wp_users中的数据一样, 一些不是经常访问的数据存储在wp_usermeta 数据表中,如用户色角色和权限。 该数据表同时也用来存储一些附加设置用来提高用户体验,其中包括管理界面配色方案,是否显示管理工具条等设置。

当我们需要通过主题或插件为用户添加附加数据时,我们应该使用这个数据表,而不是在 wp_users 数据表中添加字段,因为该数据表的结构可能会随着 WordPress 升级而变化。。

wp_usermeta 数据表包含的字段。

  • ID – 自增 ID
  • user_id –  连接到 wp_users
  • meta_key – 字段的键
  • meta_value – 字段的值

如果需要创建 user_meta 数据,我们可以使用add_user_meta() 函数:

add_user_meta( $user_id, $meta_key, $meta_value, $unique );

其中,第四个参数($unique) 为可选项,指示这个用户字段是否是唯一。

一旦添加了 user_meta 数据,我们可以通过 get_user_meta() 函数访问并输出这个数据。

关于用户字段的创建和访问,涉及到元数据的操作,我将会另外写一篇文章来详细介绍,在这里就不多说了。

用户和其他内容之间的关系

用户可以和两种类型的数据关联起来:文章和评论。在文章中,一篇文章总是有一个作者,这种关系的体现是通过 wp_posts 数据表中post_author字段来实现的,该字段的值就是该文章作者的用户 ID。

评论并不总是连接到 wp_users 数据表:只有当已登录用户发表评论时,这种关系才能建立,这种关系是通过 wp_commerts 数据表中,user_id字段来实现的。

如果评论者没有登录,评论者信息将被存储在 wp_comments 数据表中,这些数据包括:comment_author,comment_author_emailcomment_author_url 和 comment_author_IP 字段。

总结

用户是一个 WordPress 站点的必需数据,没有用户,我们就没办法通过仪表盘管理站点,没办法发布文章。

WordPress 把用户核心数据存储在 wp_users 数据表中,附加数据存储在 wp_usermeta 数据表中,并且在 wp_posts数据表中连接用户数据到文章、在 wp_comments 数据表中连接用户数据到评论。

转:https://www.wpzhiku.com/understanding-working-user-data-wordpress/

深入理解 WordPress 数据库中的用户数据 wp_user的更多相关文章

  1. SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int

    --SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int --关键说明:--1.从系统表syscolumns中的查询所有xtype='48'的记录得到类型为[tinyint]的字段- ...

  2. 批量替换数据库中所有用户数据表中字段数据类型为char和varchar到nvarchar的脚本

    解决问题:字段类型为char的总是占用指定字节长度(末尾好多空白符号),varchar数据类型长度一个汉字占2个字节,内容存储为中文的字段个人建议全部使用nvarchar. 操作说明:打开SQL Se ...

  3. 数据库:MySQL实战;左链接;查询WordPress数据库中的文章内容

    在1年前,我用学生价租了一个阿里云服务器(是真的便宜啊),自己在CentOS系统上用命令行搭了个WordPress的环境,开始了为期一个月使用自建博客的历程. 事实证明,博客在类似博客园这样的平台上写 ...

  4. Oracle 18c 数据库中scott用户不存在的解决方法

    Oracle 18c 数据库中scott用户不存在的解决方法 注:该文为转载 上面标题可直接跳转 原文地址:http://www.cnblogs.com/zangdalei/p/5482732.htm ...

  5. MySQL_(Java)使用JDBC向数据库中修改(update)数据

    MySQL_(Java)使用JDBC向数据库发起查询请求 传送门 MySQL_(Java)使用JDBC向数据库中插入(insert)数据 传送门 MySQL_(Java)使用JDBC向数据库中删除(d ...

  6. MySQL_(Java)使用JDBC向数据库中删除(delete)数据

    MySQL_(Java)使用JDBC向数据库发起查询请求 传送门 MySQL_(Java)使用JDBC向数据库中插入(insert)数据 传送门 MySQL_(Java)使用JDBC向数据库中删除(d ...

  7. MySQL_(Java)使用JDBC向数据库中插入(insert)数据

    MySQL_(Java)使用JDBC向数据库发起查询请求 传送门 MySQL_(Java)使用JDBC向数据库中插入(insert)数据 传送门 MySQL_(Java)使用JDBC向数据库中删除(d ...

  8. 清空SQL Server数据库中所有表数据的方法(转)

    清空SQL Server数据库中所有表数据的方法 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入 ...

  9. CODESOFT中怎样打印数据库中的特定数据?

      CODESOFT可用于打印.标记和跟踪的零售库存标签软件,每种产品的售卖都代表着需要打印大量的条码标签.通常我们采用的方法就是在CODESOFT连接数据库批量打 印.但是如果数据量很大,该如何选择 ...

随机推荐

  1. 洛谷P1943 LocalMaxima_NOI导刊2009提高(1)(分段打表)

    显然只需要算出每个数比前面所有数大的期望然后全部加起来就好了,一个数的期望怎么算呢? 对于一个数我们需要考虑比它大的数,因为比它小的数放它前面放它后面都可以,但是比它大的数只能放它后面.考虑大于等于它 ...

  2. 解题:POI 2009 TAB

    题面 这也算是个套路题(算吗)?发现换来换去每行每列数的组成是不变的,那么就把每行每列拎出来哈希一下,复杂度$O(Tn^2log$ $n)$有点卡时=.=. 然而正解似乎不需要哈希,就像这样↓ ;i& ...

  3. [HEOI2014]逻辑翻译

    ywy_c_asm的良心题解 是道好题 体现了二进制位的形象递归思想,以及将FWT的思路(都是拆位分治)用到题目中的典范 可以暴力高斯消元.完全没有利用2^N以及+-1的良好性质 发现项数,方程和二进 ...

  4. 树莓派更改vnc分辨率

    参考链接:https://raspberrypi.stackexchange.com/questions/56421/how-to-increase-resolution-on-latest-rasp ...

  5. 10.Android UiAutomator Junit 断言函数的使用

    一.断言函数介绍 1.断言函数: 确定被测试的方法是否按照预期的效果正常工作 比如说: if (假设成立){ 通过测试 }else{ 报错并终止当前用例测试 } 2.断言函数用例结构: 一个完整的测试 ...

  6. 修改Tomcat端口

    1.自己的tomcat修改端口号,在tomcat解压缩目录中conf目录下又一个server.xml,将HTTP协议的端口修改为自己想要的即可 <Connector port="808 ...

  7. libuv移植到ios

    libuv官网只提供了os x的编译方法,没有IOS的.既然os x和ios的系统内核差不多,并且编译工具都是xcode,那我们只要重新指定cpu架构,就可以编译出ios版的了. 1.安装python ...

  8. LeetCode-Max Points on a Line[AC源码]

    package com.lw.leet3; import java.util.HashMap; import java.util.Iterator; import java.util.Map; imp ...

  9. AngularJs附件上传下载

    首先:angular-file-upload 是一款轻量级的 AngularJS 文件上传工具,为不支持浏览器的 FileAPI polyfill 设计,使用 HTML5 直接进行文件上传. 第一步: ...

  10. gulp教程之gulp-autoprefixer

    现在浏览器的种类很多,不同浏览器的内核不同,同一浏览器也有很多不同的版本,很多css属性为了兼容浏览器需要加上特定的前缀,比如chrome的前缀是-webkit-,firefox前缀是-moz-等. ...