本文目录
[隐藏]
- 1访问wp_options表
- 2wp_options表的结构
- 3填充wp_options表
- 4使用Options API
- 5使用Settings API
- 6总结
本文是《理解和利用 WordPress 中的数据》系列教程的第 8 部分,该系列共包含以下 9 个部分:
- 理解和利用 WordPress 中的数据(介绍)
- 理解和利用 WordPress 中的数据关系
- 理解和利用 WordPress 中的内容类型
- 理解和利用 WordPress 中的用户数据
- 理解和利用 WordPress 中的posts表
- 理解和利用 WordPress 中的元数据(Metadata)
- 理解和利用 WordPress 中的分类法(Taxonomies)和分类项(Terms)
- 理解和利用 WordPress 中的选项表
- 理解和利用 WordPress 中的数据 – 多站点
在本系列前面的文章中,我们了解了 WordPress 在数据库以及各表之间的关系。
在本部分,我将介绍不同于其他的一个表—— wp_options 表。如你在下图中看到的,这是唯一一个单独的表:
选项表存储与其他表不同的数据:它不同存储关于你的网站内容的数据,而是存储关于站点本身的数据。数据通过 Options API 或 Settings API,写入到选项表中,两个API都有一系列的函数用来添加,更新,删除这个表中的数据。
你可以添加值到已存在的选项中,当你想要创建新的选项时,你也可以向它插入新的记录。
在本教程中,我会从多个角度来查看这个选项表以及如何与它交互:
- 访问
wp_options
表 wp_options
表的结构- 填充(Populating)
wp_options
表 - Options API
- Settings API
这里我只是给出这些API以及他们如何与选型表交互的概述-如果你想学习更多,阅读McFarlin的 关于Setting API的系列教程。
访问wp_options表
因为`wp_options`表存储关于整个站点启动和管理的数据,所以访问它是受限的。为能够修改这些设置和选项,用户需要拥有 manage_options
的权限,唯一默认拥有这种权限的用户角色是管理员账号(和多站点中的网络管理员账号)。
这意味着如果你需要添加其他的用户角色可以访问的选项,你需要赋予他们`manage_options`的权限,这会导致风险,所以只有你确保安全时再这样做。
wp_options表的结构
选项表有与其他3个元数据表相似的结构,它有以下4个字段:
option_ID
option_name
option_value
autoload
– 表明在页面加载时这些选项是否自动加载-单站点默认是`yes`,多站点默认为`no`
每一条记录的`option_name`字段是唯一的值:如果你对一个选项添加超过一个的值,WordPress将会以一个数组存储在`option_value`字段中。一个好的例子是,有一个`active_plugins`选项,存储一个站点中所有激活的插件数组。
当添加,编辑,或者删除`wp_options`表中的数据时,你必须明确`option_name`字段,我会在本教程的下面部分展示。
填充wp_options表
wp_options
表从以下3个来源填充:
- 默认的设置界面
- 主题选项界面
- 你通过插件添加时的设置和选项界面
WordPress有很多内置的选项-你可以在Option Reference 页面看到它们。但是你也可以创建你自己的。
为在主题和插件中创建新的选项,你需要使用Options API或者Setting API。我会在下面介绍更多细节。
使用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)。`$autoload`不被包括在内因为在多站点中站点选项不会自动加载而且不能重载。 |
delete_site_option() |
$option |
与`delete_option()`相似但是工作在多站点的网络范围内 |
get_site_option() |
$option , $default , $use_cache |
与 get_option() 相似但是得到多站点网络范围的选项 |
update_site_option() |
$option , $value |
与`update_option()`相同但是工作在多站点的网络范围内 |
注意当你通过Options API或者Settings API创建选项时,你可以创建`option_value`字段没有值的记录。这样允许站点管理员在以后的时间填写这个字段。
使用Settings API
与Options API一样,你也可以使用 Settings API 与`wp_options`表中的数据交互。Settings API使你创建设置,站点管理员使用这些设置可以用来添加,更新选项表中数据。-这创建了一个通向选项的用户接口。
Settings API有比Options API更多的内容,所以这里我不会涉及细节的内容,但是本质上它包含3个元素:
- 设置(the setting)(`wp_options`表中的数据)
- 字段(用来添加和编辑数据)
- 设置段(the settings section),一组相关的字段。
以下是Settings API中两个直接与`wp_options`表交互的两个函数:
函数 | 参数 | 说明 |
---|---|---|
register_setting() |
$option_group , $option_name , $sanitize_callback |
`option_name`参数指的是`wp_options`的`option_name`字段;其他的参数与Settings API中的其他函数交互。 |
unregister_setting() |
$option_group , $option_name , $sanitize_callback |
取消(deregisters)`wp_options`表中的设置-通常用来失活插件和主题。 |
这些函数不会向`wp_options`表的选项添加值,但是它们可以创建设置,然后可以通过Settings API中其他的函数向设置添加值。
总结
在WordPress数据库中`wp_options`是唯一一个与其他任何表都没有关联的表。这是因为它只存储关于站点和网络的数据而不存储站点内容。为与这个表交互,你可以使用Options API或者Settings API中的函数。你还可以使用函数向多站点安装中添加网络范围的数据。
在本系列的最后部分,我将会介绍多站点,因为它会设计到其他的本系列教程尚未设计到的数据库表,并且可以为每一个核心表创建多个实例,每个实例对应一个站点。
原文出自:http://code.tutsplus.com/tutorials/understanding-and-working-with-the-wordpress-options-table–cms-21119
阅读该系列的其他文章: 上一篇:理解和利用 WordPress 中的分类法(Taxonomies)和分类项(Terms) 下一篇:理解和利用 WordPress 中的数据 – 多站点