WordPress 数据库中大部分数据表都和另外的数据表有关联, 只有一个比较特殊,他就是 wp_options
,这个数据表在WordPress数据库中是完全独立的,和其他数据表没有任何关系。如下图所见。
wp_option 数据表中存储的是网站设置数据,而不是网站的内容。这些数据可以使用使用 Options API 或 Settings API 来存取,我们可以添加数据到现有的选项中,也可以根据需要添加新选项。
在本文中,我将为大家介绍下面几方面的内容。
- 访问
wp_options
数据表中的数据 wp_options
数据表的结构wp_options
数据表中的数据来源- WordPress Options API
- WordPress Settings API
访问 wp_options 数据表中的数据
wp_options
数据表中保存着站点的设置数据,管理着整个网站的设置,对这个数据表的访问必须受到限制,拥有 manage_options
权限的用户才能修改这个数据表中的数据,默认具有这个权限的角色是管理员角色 (在多站点模式中,这个角色为网络管理员)。
也就是说,如果你需要让其他角色的用户访问这个数据表,你必须分配 manage_options
权限给他们,这是一个比较危险的操作,只有你知道自己在做什么的时候,才进行这个操作!
wp_options 数据表的结构
options 数据表和 metadata 数据表结构类似,有4个字段:
option_ID
– 自增 IDoption_name
– 设置选项的键option_value
– 设置选项的值autoload
– 指定该选项是否在页面加载的时候自动加载,在单站点中默认为yes
,多站点模式下默认为no
。
option_name
在数据表中是唯一的,如果添加了多个值,WordPress 将把这些值以数组的形式保存在 option_value
字段中, active_plugins
选项就是一个很好的例子,这个选项中保存着当前激活的插件。
添加,编辑或删除 wp_options
数据表的数据时,必须指定 option_name
字段,这个在下面会详细介绍。
wp_options 数据表中的数据来源
wp_options
数据表中的数据主要通过以下三种来源添加。
- WordPress默认设置选项
- 主题设置选项
- 通过插件添加的设置选项
为了方便存取 wp_options 数据表中的数据,WordPress 为我们提供了一些很方便的 API,当然,我们也可以创建自己的功能函数来存取该表中的数据。要想创建新的设置选项,我们可以使用 Options API 或 Settings API。
使用 WordPress Options API
Options API 有 8 个功能,这些功能允许我们添加、获取、更新或删除设置选项。
函数 | 参数 | 备注 |
---|---|---|
add_option() | $option ,$value ,$deprecated ,$autoload | 只有 $option 是必需参数,如果数据表的option_name 字段是$option , WordPress 将添加$value 值作为数组添加到 option_value 字段,如果没有匹配的字段,将添加新记录。 |
delete_option() | $option | 删除该项的所有记录。 |
get_option() | $option ,$default | $default (可选) 如果获取不到选项之,则返回该值。 |
update_option() | $option ,$new_value | $new_value 将要添加到option_value 字段的值。 |
add_site_option() | $option $value | 类似 add_option() ,但是在全站点中可用。也就是说此设置将添加在wp_options 数据表中,而不是 wp_XX_options数据表 ( XX 是站点 ID)。 |
delete_site_option() | $option | 和delete_option() 一样,在多站点模式中使用。 |
get_site_option() | $option $default $use_cache | 和 get_option() 一样,在多站点模式中使用。 |
update_site_option() | $option , $value | 和 update_option() 一样,在多站点模式中使用。 |
创建设置选项的时候,可以把 option_value
字段留空,以便稍后添加数据。
使用WordPress Settings API
和 Options API 一样,我们也可以使用 Settings API 来存取 wp_options
数据表中得数据,Settings API 允许我们创建添加或更新 option 数据表数据的界面。这样我们就可以在仪表盘设置中修改网站设置了。
Settings API 和 Options API 功能基本类似,所以在这里就一一介绍了,只说明不同的几点。
- 设置: (
wp_options
数据表中的数据) - 字段: ( 用来添加和编辑数据的界面 )
- 设置区域:字段的分组
Settings API 中的以下两个功能可以直接操作 wp_options
数据表中的数据。
函数 | 参数 | 备注 |
---|---|---|
register_setting() | $option_group , $option_name ,$sanitize_callback | $option_name 参数就是 wp_options 数据表中的option_name 字段 |
unregister_setting() | $option_group , $option_name ,$sanitize_callback | 从wp_options – 撤销设置选项,作用和register_setting() 相反。 |
上面的功能只是为选项创建了设置界面,并不会直接添加数据到wp_options
数据表中。
总结
wp_options
数据表不和 WordPress 数据中的其他任何数据关联,这个数据表里面存储的是网站的设置数据和一些临时数据,我们可以通过 WordPress 的 Options API 或 Settings API 来存取这个表中的数据。
4 thoughts on “深入理解 WordPress 设置选项数据表 wp_options”
这个表总是坏是什么原因?过几天就要去修复一下,会导致数据库无法连接 然后打开数据库管理会发现这个表正在使用中,然后修复才能好,这是怎么导致的呢?
对了我是多站点
有可能是网站硬盘被占满了,优先排查一下是不是数据库日志占用太多空间了。
根本就不是磁盘的问题,这个似乎是被攻击造成的,我也说不上来,我的新服务器,磁盘才1%过几天就损坏了