深入理解 WordPress 数据库中的用户数据 wp_user

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/

时间: 2024-11-11 22:29:05

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

一起数据库中过期用户数据堆积问题的排查过程

[文章摘要] 对于使用数据库来存放大量用户的软件来说,过期数据的清理机制需要慎重设计.如果设计不当,则会导致数据的误删除或清理不完全. 本文对某数据清理模块因参数配置不当而导致的过期用户数据堆积问题进行了详细的分析,为相关软件问题的分析及解决提供了有益的参考. 一.问题描述 在某软件系统中,为了让不同种类的用户享受对应的服务,引入了一个信箱服务等级的概念,即不同服务等级的用户具有不同的权限."一分钱,一分货",对于运营商来说,高服务等级的用户收取高的资费,提供高质量的服务. 为了维护不

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

在1年前,我用学生价租了一个阿里云服务器(是真的便宜啊),自己在CentOS系统上用命令行搭了个WordPress的环境,开始了为期一个月使用自建博客的历程. 事实证明,博客在类似博客园这样的平台上写还是非常方便的! 不用自己优化后台,虽然WordPress已经足够傻瓜了,但是我还是太菜了 只有小贵的价格才能租到一个网速不慢+大小够用的服务器 之前考研没有工作没有收入,于是就狠下心不要了.重新捡起了长草很久的博客园. 今天,下了决心把以前的数据导出来,就有了以下的内容 1.把wordpress.

查看MYSQL数据库中所有用户及拥有权限

查看MYSQL数据库中所有用户 mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; 查看数据库中具体某个用户的权限mysql> show grants for 'cactiuser'@'%';

清空SQL Server数据库中所有表数据的方法

其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入死循环,二是这里使用了微软未正式公开的sp_MSForEachTable存储过程. 也许很多读者朋友都经历过这样的事情:要在开发数据库基础上清理一个空库,但由于对数据库结构缺乏整体了解,在删除一个表的记录时,删除不了,因为可能有外键约束,一个常见的数据库结构是一个主表,一个子表,这种情况下一般都得先删除子表记录,再删除主表记录. 说道删除数据记录,

统计电视机顶盒中无效用户数据,并以压缩格式输出

前面我们学习了如何使用MapReduce计数器,那么我们通过下面这个项目巩固我们所学 1.介绍 本项目我们使用电视机顶盒数据,统计出无效用户数据记录,并解析出有效的用户数据以压缩格式输出 2.数据集 数据来源于“hadoop小文件合并”处理后的结果 3.分析 基于需求,我们通过以下几步完成: 1.首先使用Jsoup,解析出html格式的机顶盒数据 2.编写Mapper类,自定义计数器统计无效的机顶盒数据,并将有效的机顶盒数据以压缩格式输出 4.实现 1.首先定义一个ParseTVData类,解析

MYSQL 查看数据库中所有用户及拥有权限

查看MYSQL数据库中所有用户 mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;+---------------------------------------+| query                                 |+---------------------------------------+| User: 'cactiuser'@

数据库中批量导入数据,有两列的值需要从其他表中查出来,我现在没有思路,求解惑

我现在批量往数据库里导正式数据(sql insert),但是数据中有三列分别是岗位,办事处,大区,给的数据中只给了岗位的值,办事处的值可以通过岗位值在岗位表查到,大区的值可以通过办事处的值在办事处表里查到.现在我已经把其他数据都导进去了,只剩办事处和大区没有值,我该如何批量更新这两列的值啊 导入的数据的表: 岗位表: 办事处表: 本人sql不是很好,希望sql大神能给出来解惑一下,拜谢~ 数据库中批量导入数据,有两列的值需要从其他表中查出来,我现在没有思路,求解惑 >> mysql 这个答案描

如何从Zabbix数据库中获取监控数据

做过Zabbix的同学都知道,Zabbix通过专用的Agent或者SNMP收集相关的监控数据,然后存储到数据库里面实时在前台展示.Zabbix监控数据主要分为以下两类: 历史数据:history相关表,从history_uint表里面可以查询到设备监控项目的最大,最小和平均值,即存储监控数据的原始数据. 趋势数据:trends相关表,趋势数据是经过Zabbix计算的数据,数据是从history_uint里面汇总的,从trends_uint可以查看到监控数据每小时最大,最小和平均值流量. Zabb

前台传来的新数据与数据库中的旧数据比较更新算法

工作中遇到一个很小的功能,发现写好还有点难度,经过一晚上的思考,把成果记录下. 问题: 数据库中保存了一些数据,前台更新操作传来新的数据.如何比较差异,进行更新.如: 前台传来1,2,3,数据库中有3,5.则需要在数据库中增加1,2:在数据库中删除5:原有数据3不变. 解决方法一: 先把数据库中原的数据全部清空,然后把前台的数据全部执行插入. 这种方法简单,很容易理解,以及判断及正确性.缺点是如果原数据库数据较多,则重复删除后增加,则效率不高. 解决方法二: 查询原数据库中的数据,做为待删除的列