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

内容纲要

WordPress 数据库中大部分数据表都和另外的数据表有关联, 只有一个比较特殊,他就是 wp_options ,这个数据表在WordPress数据库中是完全独立的,和其他数据表没有任何关系。如下图所见。

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()
$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 来存取这个表中的数据。

转载:https://www.wpzhiku.com/understanding-working-wordpress-options-table/