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 来存取这个表中的数据。
参考
https://codex.wordpress.org/Creating_Options_Pages
https://codex.wordpress.org/Settings_API
https://codex.wordpress.org/Options_API