性价比最高的香港ASP、PHP主机提供商
做网站,就上凡科建站

理解和利用 WordPress 中的选项表

Loading
0
Comodo SLL证书促销 - 免费ssl证书申请_ssl证书购买_ev ssl证书_https证书购买 - GDCA_数安时代

在本系列前面的文章中,我们了解了 WordPress 在数据库以及各表之间的关系。

在本部分,我将介绍不同于其他的一个表—— wp_options 表。如你在下图中看到的,这是唯一一个单独的表:

working-with-data-in-wordpress-introduction-database-tables

选项表存储与其他表不同的数据:它不同存储关于你的网站内容的数据,而是存储关于站点本身的数据。数据通过 Options APISettings 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_cacheget_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大学 原创翻译,未经允许,禁止转载和采用本译文。

阅读该系列的其他文章:
上一篇:理解和利用 WordPress 中的分类法(Taxonomies)和分类项(Terms)
下一篇:理解和利用 WordPress 中的数据 – 多站点
支付宝扫码打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

MetInfo | 最适合企业网站建设的cms系统

关于 倡萌

一个疯狂的 WordPress 爱好者,喜欢折腾 WordPress 主题,分享 WordPress 资源。如果你也喜欢 WordPress,欢迎和我一起交流!

发表评论