wordpress网站开发:wp_options 选项表及api

2018-09-1509:36:20网站建设与开发Comments15,602 views字数 2707阅读模式

本部分,我将介绍不同于其他的一个表—— wp_options 表。如你在下图中看到的,这是唯一一个单独的表:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

wordpress网站开发:wp_options 选项表及api文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

选项表存储与其他表不同的数据:它不同存储关于你的网站内容的数据,而是存储关于站点本身的数据。数据通过 Options API 或 Settings API,写入到选项表中,两个API都有一系列的函数用来添加,更新,删除这个表中的数据。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

你可以添加值到已存在的选项中,当你想要创建新的选项时,你也可以向它插入新的记录。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

在本教程中,我会从多个角度来查看这个选项表以及如何与它交互:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

  • 访问 wp_options 表
  • wp_options 表的结构
  • 填充(Populating) wp_options 表
  • Options API
  • Settings API

这里我只是给出这些API以及他们如何与选型表交互的概述-如果你想学习更多,阅读McFarlin的 关于Setting API的系列教程文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

访问wp_options表

因为`wp_options`表存储关于整个站点启动和管理的数据,所以访问它是受限的。为能够修改这些设置和选项,用户需要拥有 manage_options 的权限,唯一默认拥有这种权限的用户角色是管理员账号(和多站点中的网络管理员账号)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

这意味着如果你需要添加其他的用户角色可以访问的选项,你需要赋予他们`manage_options`的权限,这会导致风险,所以只有你确保安全时再这样做。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

wp_options表的结构

选项表有与其他3个元数据表相似的结构,它有以下4个字段:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

  • option_ID
  • option_name
  • option_value
  • autoload – 表明在页面加载时这些选项是否自动加载-单站点默认是`yes`,多站点默认为`no`

每一条记录的`option_name`字段是唯一的值:如果你对一个选项添加超过一个的值,WordPress将会以一个数组存储在`option_value`字段中。一个好的例子是,有一个`active_plugins`选项,存储一个站点中所有激活的插件数组。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

当添加,编辑,或者删除`wp_options`表中的数据时,你必须明确`option_name`字段,我会在本教程的下面部分展示。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

填充wp_options表

wp_options 表从以下3个来源填充:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

  • 默认的设置界面
  • 主题选项界面
  • 你通过插件添加时的设置和选项界面

WordPress有很多内置的选项-你可以在Option Reference 页面看到它们。但是你也可以创建你自己的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

为在主题和插件中创建新的选项,你需要使用Options API或者Setting API。我会在下面介绍更多细节。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

使用Options API

Options API包含8个函数供你添加,获得,更新或者删除选项:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

函数参数说明
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`字段没有值的记录。这样允许站点管理员在以后的时间填写这个字段。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

使用Settings API

与Options API一样,你也可以使用 Settings API 与`wp_options`表中的数据交互。Settings API使你创建设置,站点管理员使用这些设置可以用来添加,更新选项表中数据。-这创建了一个通向选项的用户接口。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

Settings API有比Options API更多的内容,所以这里我不会涉及细节的内容,但是本质上它包含3个元素:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

  • 设置(the setting)(`wp_options`表中的数据)
  • 字段(用来添加和编辑数据)
  • 设置段(the settings section),一组相关的字段。

以下是Settings API中两个直接与`wp_options`表交互的两个函数:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

函数参数说明
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中其他的函数向设置添加值。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

总结

在WordPress数据库中`wp_options`是唯一一个与其他任何表都没有关联的表。这是因为它只存储关于站点和网络的数据而不存储站点内容。为与这个表交互,你可以使用Options API或者Settings API中的函数。你还可以使用函数向多站点安装中添加网络范围的数据。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4672.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/cms/4672.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定