深入理解 WordPress 设置选项数据表 wp_options

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 – 自增 ID
  • option_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()$optiondelete_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 来存取这个表中的数据。

深入理解 WordPress 设置选项数据表 wp_options