WordPress源码解析-数据库表结构

WordPress是一个功能强大的内容管理系统,它使用MySQL数据库来存储和管理网站的内容、用户和配置信息。作为WordPress开发者,了解WordPress数据库的结构和各表的作用至关重要,因为这将帮助您更好地开发插件和主题,以及执行高级数据库操作。

WordPress数据库表
如果是一个普通的用户,不需要了解wordpress数据库的结构。但是,如果你正在写一个插件,你应该会对wordpress如何处理它的数据和关系感兴趣。如果你已经尝试使用已经存在的wordpress api 去访问你需要的数据,但不直接访问数据库的情况下,这是不可能的,WordPress的提供WPDB的类,使这项任务变得简单。

WordPress数据库的11个数据表分别是:

表名(点击表名查看详细介绍)

描述
wp_commentmeta    文章评论额外信息表
wp_comments    文章评论信息表
wp_links    链接信息表
wp_options    基本配置信息表,通常通过get_option来操作,该表通常作为插件存储数据的一个地方。
wp_postmeta    文章额外数据表,例如文章浏览次数,文章的自定义字段等都存储在这里。
wp_posts    文章信息表,包括了日志、附件、页面等等信息。是WordPress最重要的一个数据表。
wp_terms    文章分类、链接分类、标签的信息表。
wp_term_relationships    分类与文章信息表(wp_posts)、链接表(wp_links)的关联表。
wp_term_taxonomy    分类信息表,区分wp_terms信息的分类类型,有category、link_category和tag三种分类类型。
wp_usermeta    用户额外信息表
wp_users    用户基本信息表。存放系统所有用户基本信息。
WordPress数据库表之间的关系是什么呢?

要搞明白这个问题以及对WordPress数据表之间的关系有更加深刻的理解,让我们先来想想WordPress博客系统的功能,默认安装的WordPress2.6.2版本博客系统涉及的数据信息主要包括了用户信息、分类信息、链接信息、文章信息、文章评论信息、基本配置信息这6类信息。

用户信息:系统中所有注册用户的帐号信息。

分类信息:包括了文章分类、链接分类、标签这3中分类信息。

链接信息:就是博客系统中的友情链接信息。

文章信息:博客系统中的日志、日志产生的附件、页面等信息。

文章评论信息:对具体日志或者附件的评论信息。

基本配置信息:系统中的基本配置信息,例如博客名称,博客地址等等。

WordPress数据库的11个数据表就是为了存储以上6类数据信息而设计。

这些表之间的总体关系结构如下图所示:


从上图可以看出WordPress博客系统6类数据信息分别所涉及的数据表及关系如下表所示:

信息类型    涉及数据表及关联关系
用户信息    数据表:wp_users、wp_usermeta,关联关系:wp_users.ID->wp_usermeta.user_id
分类信息    数据表:wp_terms、wp_term_taxonomy关联关系:wp_terms.term_id->wp_term_taxonomy.term_id
链接信息    
数据表:wp_links、wp_term_relationships、wp_terms、wp_term_taxonomy、 wp_users、wp_usermeta关联关系:

一,确定链接所属分类 (1)wp_links.link_id->wp_term_relationships.object_id, (2)wp_term_relationships.term_taxonomy_id->wp_term_taxonomy.term_taxonomy_id
(该关系还要取决与wp_term_taxonomy表中的taxonomy分类类型为“link_category”) (3)wp_terms.term_id->wp_term_taxonom.term_id

二、确定链接所有者 (4)wp_links.link_owner->wp_users.ID(5)wp_users.ID->wp_usermeta.user_id

文章信息    
数据表:wp_posts、wp_postmeta、wp_comments、wp_term_relationships、wp_terms、 wp_term_taxonomy、wp_users、wp_usermeta关联关系:一、确定文章信息 (1)wp_posts.ID->wp_postsmeta.post_id

二、确定文章评论 (2)wp_posts.ID->wp_comments.comment_post_id

三、确定文章评论的作者 (3)wp_comments.comment_author->wp_users.ID

(4)wp_users.ID->wp_usermeta.user_id

四、确定文章所属分类

(5)wp_posts.ID->wp_term_relationships.object_id,

(6)wp_term_relationships.term_taxonomy_id->wp_term_taxonomy.term_taxonomy_id
(该关系还要取决与wp_term_taxonomy表中的taxonomy分类类型为“category”或者“tag”)

(7)wp_terms->term_id->wp_term_taxonomy

五、确定文章作者

(8)wp_posts.author->wp_users.ID;

(9)wp_users.ID->wp_usermeta.user_id

文章评论信息    数据表:wp_comments、wp_posts、wp_users、wp_usermeta关联关系:
一、确定评论的文章 (1)wp_comments.comment_post_id->wp_posts.ID
二、确定评论的作者 (2)wp_comments.comment_author->wp_users.ID(3)wp_users.ID->wp_usermeta.user_id
基本配置信息    数据表:wp_options没有关联关系
数据表列详解
每个数据库表都包含多个列,每一列都用于存储特定类型的数据。以下是一些常用数据表中的列以及它们的作用:

wp_commentmeta
meta_id:自增唯一ID
comment_id:对应评论ID
meta_key:键名
meta_value:键值
wp_comments
comment_ID:自增唯一ID
comment_post_ID:对应文章ID
comment_author:评论者
comment_author_email:评论者邮箱
comment_author_url:评论者网址
comment_author_IP:评论者IP
comment_date:评论时间
comment_date_gmt:评论时间(GMT+0时间)
comment_content:评论正文
comment_karma:评论的评分
comment_approved:评论是否被批准
comment_agent:评论者的USER AGENT
comment_type:评论类型(pingback/普通)
comment_parent:父评论ID
user_id:评论者用户ID(不一定存在)


wp_links
link_id:自增唯一ID
link_url:链接URL
link_name:链接标题
link_image:链接图片
link_target:链接打开方式
link_description:链接描述
link_visible:链接是否可见(Y/N)
link_owner:添加者用户ID
link_rating:链接的评分等级
link_updated:未知
link_rel:XFN关系
link_notes:XFN注释
link_rss:链接的RSS地址


wp_options
option_id:自增唯一ID
blog_id:博客ID,用于多用户博客,默认为0
option_name:键名
option_value:键值
autoload:在WordPress载入时自动载入(yes/no)
wp_postmeta
meta_id:自增唯一ID
post_id:对应文章ID
meta_key:键名
meta_value:键值


wp_posts
ID:自增唯一ID
post_author:对应作者ID
post_date:发布时间
post_date_gmt:发布时间(GMT+0时间)
post_content:正文内容
post_title:文章标题
post_excerpt:文章摘录
post_status:文章状态(publish/auto-draft/inherit等)
comment_status:评论状态(open/closed)
ping_status:PING状态(open/closed)
post_password:文章密码
post_name:文章缩略名
to_ping:未知
pinged:已经PING过的链接
post_modified:修改时间
post_modified_gmt:修改时间(GMT+0时间)
post_content_filtered:未知
post_parent:父文章,主要用于页面(PAGE)
guid:未知
menu_order:排序ID
post_type:文章类型(post/page等)
post_mime_type:MIME类型
comment_count:评论总数


wp_terms
term_id:分类或标签ID
name:分类或标签名称
slug:分类或标签缩略名
term_group:未知
wp_term_relationships
object_id:对应文章ID或链接ID
term_taxonomy_id:对应分类方法ID
term_order:排序
wp_term_taxonomy
term_taxonomy_id:分类方法ID
term_id:分类或标签ID
taxonomy:分类方法类型(category/post_tag等)

description:未知
parent:所属父分类方法ID
count:文章数统计


wp_usermeta
umeta_id:自增唯一ID
user_id:对应用户ID
meta_key:键名
meta_value:键值


wp_users
ID:自增唯一ID
user_login:登录名
user_pass:密码
user_nicename:昵称
user_email:电子邮件地址
user_url:个人网址
user_registered:注册时间
user_activation_key:激活码
user_status:用户状态
display_name:显示名称

Wp-config.php中关于数据库的设置。
————————————————

?php  /*wp-config.php */  // ** MySQL 设置 - 具体信息来自您正在使用的主机 ** ///** WordPress 数据库的名称 */  define('DB_NAME', SAE_MYSQL_DB);/** MySQL 数据库用户名 */  define('DB_USER', SAE_MYSQL_USER);/** MySQL 数据库密码 */  define('DB_PASSWORD', SAE_MYSQL_PASS);/** MySQL 主机 */  define('DB_HOST', SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT);/** 创建数据表时默认的文字编码 */  define('DB_CHARSET', 'utf8');/** 数据库整理类型。如不确定请勿更改 */  define('DB_COLLATE', '');define('WP_USE_MULTIPLE_DB', true);$db_list = array('write'=> array(array('db_host' => SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,'db_user'=> SAE_MYSQL_USER,'db_password'=> SAE_MYSQL_PASS,'db_name'=> SAE_MYSQL_DB,'db_charset'=> 'utf8'  )),'read'=> array(array('db_host' => SAE_MYSQL_HOST_S.':'.SAE_MYSQL_PORT,'db_user'=> SAE_MYSQL_USER,'db_password'=> SAE_MYSQL_PASS,'db_name'=> SAE_MYSQL_DB,'db_charset'=> 'utf8'  )),);$global_db_list = $db_list['write'];/**#@+* 身份密匙设定。** 您可以随意写一些字符* 或者直接访问 {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org 私钥生成服务},* 任何修改都会导致 cookie 失效,所有用户必须重新登录。** @since 2.6.0*/  define('AUTH_KEY',         hash_hmac('sha1', SAE_ACCESSKEY . 'AUTH_KEY', SAE_SECRETKEY ));define('SECURE_AUTH_KEY',  hash_hmac('sha1', SAE_ACCESSKEY . 'SECURE_AUTH_KEY', SAE_SECRETKEY ));define('LOGGED_IN_KEY',    hash_hmac('sha1', SAE_ACCESSKEY . 'LOGGED_IN_KEY', SAE_SECRETKEY ));define('NONCE_KEY',        hash_hmac('sha1', SAE_ACCESSKEY . 'NONCE_KEY', SAE_SECRETKEY ));define('AUTH_SALT',        hash_hmac('sha1', SAE_ACCESSKEY . 'AUTH_SALT', SAE_SECRETKEY ));define('SECURE_AUTH_SALT', hash_hmac('sha1', SAE_ACCESSKEY . 'SECURE_AUTH_SALT', SAE_SECRETKEY ));define('LOGGED_IN_SALT',   hash_hmac('sha1', SAE_ACCESSKEY . 'LOGGED_IN_SALT', SAE_SECRETKEY ));define('NONCE_SALT',       hash_hmac('sha1', SAE_ACCESSKEY . 'NONCE_SALT', SAE_SECRETKEY ));/**#@-*/  /*** WordPress 数据表前缀。** 如果您有在同一数据库内安装多个 WordPress 的需求,请为每个 WordPress 设置不同的数据表前缀。* 前缀名只能为数字、字母加下划线。*/  $table_prefix  = 'wp_';/*** WordPress 语言设置,默认为英语。** 本项设定能够让 WordPress 显示您需要的语言。* wp-content/languages 内应放置同名的 .mo 语言文件。* 要使用 WordPress 简体中文界面,只需填入 zh_CN。*/  define ('WPLANG', 'zh_CN');/*** 开发者专用:WordPress 调试模式。** 将这个值改为“true”,WordPress 将显示所有开发过程中的提示。* 强烈建议插件开发者在开发环境中启用本功能。*/  define('WP_DEBUG', false);/* 好了!请不要再继续编辑。请保存该文件。*/  /** WordPress 目录的绝对路径。*/  if ( !defined('ABSPATH') )define('ABSPATH', dirname(__FILE__) . '/');/** 设置 WordPress 变量和包含文件。这个文件内容很多啊,分析较困难*/  require_once(ABSPATH . 'wp-settings.php');


                        
原文链接:https://blog.csdn.net/vbgesab/article/details/139601359

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/496363.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中使用四叶天动态代理IP构建ip代理池,实现httpClient和Jsoup代理ip爬虫

在本次爬虫项目中,关于应用IP代理池方面,具体完成以下功能: 从指定API地址提取IP到ip池中(一次提取的IP数量可以自定义更改) 每次开始爬虫前(多条爬虫线程并发执行),从ip池中获取一…

Python机器学习笔记(十三、k均值聚类)

聚类(clustering)是将数据集划分成组的任务,这些组叫作簇(cluster)。其目标是划分数据,使得一个簇内的数据点非常相似且不同簇内的数据点非常不同。与分类算法类似,聚类算法为每个数据点分配&am…

KNN分类算法 HNUST【数据分析技术】(2025)

1.理论知识 KNN(K-Nearest Neighbor)算法是机器学习算法中最基础、最简单的算法之一。它既能用于分类,也能用于回归。KNN通过测量不同特征值之间的距离来进行分类。 KNN算法的思想: 对于任意n维输入向量,分别对应于特征…

宝塔-firefox(Docker应用)-构建自己的Web浏览器

安装基础软件 宝塔中安装firefox(Docker应用) 。宝塔中需要先安装docker及docker-composefirefox配置安装 点击firefox应用,选择【安装配置】点击右边绿色按钮,进行安装,这一步等待docker-compose根据你的配置初始化docker应用 等待安装 …

如何从 0 到 1 ,打造全新一代分布式数据架构

导读:本文从 DIKW(数据、信息、知识、智慧) 模型视角出发,探讨数字世界中数据的重要性问题。接着站在业务视角,讨论了在不断满足业务诉求(特别是 AI 需求)的过程中,数据系统是如何一…

Docker部署GitLab服务器

一、GitLab介绍 1.1 GitLab简介 GitLab 是一款基于 Git 的开源代码托管平台,集成了版本控制、代码审查、问题跟踪、持续集成与持续交付(CI/CD)等多种功能,旨在为团队提供一站式的项目管理解决方案。借助 GitLab,开发…

芯片Tapeout power signoff 之IR Drop Redhawk Ploc文件格式及其意义

数字IC后端工程师在芯片流程最后阶段都会使用redhawk或voltus进行设计的IR Drop功耗signoff分析。必须确保静态,动态ir drop都符合signoff标准。 在做redhawk ir drop分析前,我们需要提供一个redhawk ploc供电点坐标。 数字IC设计后端实现前期预防IR D…

HarmonyOS NEXT 实战之元服务:静态案例效果---查看国内航班服务

背景: 前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考 先上本期效果图 ,里面图片自行替换 效果图1完整代码案例如下: Index代码 import { authen…

python+requests接口自动化测试框架实例详解

前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自动化框架,使用的…

前端:改变鼠标点击物体的颜色

需求&#xff1a; 需要改变图片中某一物体的颜色&#xff0c;该物体是纯色&#xff1b; 鼠标点击哪个物体&#xff0c;哪个物体的颜色变为指定的颜色&#xff0c;利用canvas实现。 演示案例 代码Demo <!DOCTYPE html> <html lang"en"><head>&l…

聊一聊 C#前台线程 如何阻塞程序退出

一&#xff1a;背景 1. 讲故事 这篇文章起源于我的 C#内功修炼训练营里的一位朋友提的问题&#xff1a;后台线程的内部是如何运转的 ? &#xff0c;犹记得C# Via CLR这本书中 Jeffery 就聊到了他曾经给别人解决一个程序无法退出的bug&#xff0c;最后发现是有一个 Backgrond…

Nmap基础入门及常用命令汇总

Nmap基础入门 免责声明&#xff1a;本文单纯分享技术&#xff0c;请大家使用过程中遵守法律法规~ 介绍及安装 nmap是网络扫描和主机检测的工具。作为一个渗透测试人员&#xff0c;必不可少的就是获取信息。那么nmap就是我们从互联网上获取信息的途径&#xff0c;我们可以扫描互…

Excel中一次查询返回多列

使用Excel或wps的时候&#xff0c;有时候需要一次查询返回多列内容&#xff0c;这种情况可以选择多次vlookup或者多次xlookup&#xff0c;但是这种做法费时费力不说&#xff0c;效率还有些低下&#xff0c;特别是要查询的列数过多时。我放了3种查询方法&#xff0c;效果图&…

NodeMCU驱动28BYJ-48型步进电机(Arduino)

NodeMCU NodeMCU开发板 此NodeMCU是在乐鑫公司&#xff08;Espressif Systems&#xff09;生产的ESP-12F模组的基础上封装好的具备WiFi功能的开源IoT开发板。本次选用安信可公司&#xff08;Ai-Thinker&#xff09;生产的CP2102版本的开发板。 28BYJ-48型步进电机 28BYJ-48型…

qt QZipReader详解

1、概述 QZipReader 是 Qt 中用于从 .zip 文件中读取和提取文件内容的类。它提供了便捷的方法来访问压缩包中的文件和目录&#xff0c;并允许你解压缩单个或多个文件。通过 QZipReader&#xff0c;你可以以编程方式读取 .zip 文件中的内容&#xff0c;并提取它们到目标目录中。…

html + css 淘宝网实战

之前有小伙伴说&#xff0c;淘宝那么牛逼你会写代码&#xff0c;能帮我做一个一样的淘宝网站吗&#xff0c;好呀&#xff0c;看我接下来如何给你做一个淘宝首页。hahh,开个玩笑。。。学习而已。 在进行html css编写之前 先了解下网页的组成和网页元素的尺寸吧 1.网页的组成 …

Ollama+OpenWebUI+llama3本地部署

引言 llama3在4月19日刚刚发布&#xff0c;官方的对比结果中在开源模型中堪称世界第一&#xff0c;整好周六日有时间&#xff0c;在魔搭社区上测试一下 2 安装Ollama 2.1 下载Ollama 登录Ollama官网下载Ollama安装包 GitHub&#xff1a;https://github.com/ollama/ollama?t…

【vue2父组件调用子组件方法之slot的使用】

父组件调用子组件方法之slot的使用 具体功能需求&#xff1a; 一个页面&#xff0c;点击按钮&#xff0c;打开一个弹窗。弹窗有自定义表单和公共表单&#xff0c;提交的时候要获取两个表单的数据以及复显表单数据 为什么使用插槽了&#xff0c;因为我需要在弹窗中复用公共表单…

【HarmonyOS】鸿蒙将资源文件夹Resource-RawFile下的文件存放到沙箱目录下

【HarmonyOS】鸿蒙将资源文件夹Resource-RawFile下的文件存放到沙箱目录下 一、问题背景 应用开发中&#xff0c;我们经常会遇到一些文件原先是放在资源文件夹 rawfile下&#xff0c;但是逻辑处理时&#xff0c;需要转移到本地沙箱才能操作。这种情况下&#xff0c;就需要将将…

ubuntu 网络管理--NetworkManager

ubuntu 网络管理--NetworkManager 1 介绍2 NetworkManager 命令2 nmcli 命令显示可用的wifi AP连接wifi检查网络连接 ?? 如何删除删除网络连接查看设备状态添加一个新的以太网连接设置静态 IP 地址启用并测试连接添加新的wifi连接 3 其他命令参考 1 介绍 NetworkManager 是标…