概述
这 设置API,添加 WordPress 2.7,允许将包含设置表单的管理页面进行半自动管理。它使您可以定义设置页面,这些页面中的各节和部分中的各个部分。
可以与其中的部分和字段一起注册新的设置页面。现有的设置页面也可以通过注册新的设置部分或其中的字段来添加。
组织注册和验证领域仍然需要使用设置API向开发人员提供一些努力,但避免了许多基础选项管理的复杂调试。
注意:使用设置API时,表单帖子为wp-admin/options.php
提供相当严格的功能检查。用户将需要manage_options
能力(在多站点中必须是超级管理员)才能提交表格。
这些功能在wp-admin/includes/plugin.php
和wp-admin/includes/template.php
功能参考
设置注册/未注册:
添加字段/部分:
选项表格渲染:
错误:
添加设置字段
您可以添加新的设置字段(基本上是在wp_options
数据库表,但使用此功能完全管理到现有的WordPress页面。您的回调功能只需要输出适当的HTML输入并用旧值填充,保存将在场景后面完成。您可以使用add_settings_section()
如下所述。
笔记: 您必须注册您使用的任何选项add_settings_field()
否则它们不会自动保存和更新。有关详细信息和示例,请参见下文。
add_settings_field( $id, $title, $callback, $page, $section = 'default', $args = array() )
$id
– 用于在标签的“ ID”属性中使用的字符串。$title
– 该领域的标题。$callback
– 作为较大形式的一部分,用所需的输入填充字段的功能。输入的名称和ID应与给出的$ ID匹配此功能。该函数应呼应其输出。$page
– 可以显示该字段的设置页面(一般,阅读,写作等)。$section
– 设置页面的部分显示框(默认或使用add_settings_section添加的部分,查看源中的页面以查看现有的内容。)$args
– 额外的论点传递到回调功能
添加设置部分
设置部分是您在WordPress设置页面上看到的设置组,并带有共享标题。在您的插件中,您可以在现有设置页面上添加新部分,而不是创建一个全新的页面。这使您的插件更简单地维护和创建更少的新页面供用户学习。您只需告诉他们在相关现有页面上更改您的设置即可。
add_settings_section( $id, $title, $callback, $page );
$id
– 用于在标签的“ ID”属性中使用的字符串。$title
– 本节的标题。$callback
– 填充所需内容的部分的功能。该函数应呼应其输出。$page
– 可以在其上显示该部分的设置页面(一般,阅读,写作,媒体等)
注册设置
register_setting( $option_group, $option_name, $args );
unregister_setting( $option_group, $option_name );
笔记:register_setting()
以及上述add_settings_*()
应从一个函数调用函数admin_init
动作钩回调功能。请参阅下面的“示例”部分。
选项表格渲染
当使用API将设置添加到现有选项页面时,您无需担心表单本身,因为已经为页面定义了该表单。当您从头开始定义一个新页面时,您需要输出一个最小的形式结构,该结构包含一些标签,然后输出页面的实际部分和设置。
为了显示隐藏的字段并处理您选项表单的安全性,设置API提供了 settings_fields() 功能。settings_fields( $option_group );
$option_group
((细绳)(必需的):
设置组名称。这必须与使用的组名称匹配 register_setting(),这是将要出现表单的页面slug名称。默认:没有任何
为了显示分配给页面和包含的设置的部分,设置API提供了 do_settings_sections() 功能。 do_settings_sections( $page );
$page
((细绳)(必需的):
您要输出的设置部分的页面名称。这应该匹配使用的页名 add_settings_section()。默认:没有任何
这 do_settings_fields() 提供功能以输出分配给特定页面和部分的字段。您不应该直接调用此功能,而是使用do_settings_sections()
输出部分内容以及相关的字段。
您的选项表格还需要提交按钮。您可以使用 submit_button() 功能来执行此操作。
最后,您需要输出html <形式>标签定义options.php和邮政方法的动作目的地的标签。这是一个示例选项表单代码,以生成添加到页面上的所有部分和字段的slug名称为my-page
:
<form method="POST" action="options.php">
<?php
settings_fields( 'my-page' ); // pass slug name of page, also referred to in Settings API as option group name
do_settings_sections( 'my-page' ); // pass slug name of page
submit_button(); // submit button
?>
</form>
例子
在其中添加一个带有新字段的设置部分
<?php
/**
* Add all your sections, fields and settings during admin_init
*/
function wporg_settings_api_init() {
// Add the section to reading settings so we can add our
// fields to it
add_settings_section(
'wporg_setting_section',
'Example settings section in reading',
'wporg_setting_section_callback_function',
'reading'
);
// Add the field with the names and function to use for our new
// settings, put it in our new section
add_settings_field(
'wporg_setting_name',
'Example setting Name',
'wporg_setting_callback_function',
'reading',
'wporg_setting_section'
);
// Register our setting so that $_POST handling is done for us and
// our callback function just has to echo the <input>
register_setting( 'reading', 'wporg_setting_name' );
} // wporg_settings_api_init()
add_action( 'admin_init', 'wporg_settings_api_init' );
/**
* Settings section callback function
*
* This function is needed if we added a new section. This function
* will be run at the start of our section
*/
function wporg_setting_section_callback_function() {
echo '<p>Intro text for our settings section</p>';
}
/*
* Callback function for our example setting
*
* creates a checkbox true/false option. Other types are surely possible
*/
function wporg_setting_callback_function() {
echo '<input name="wporg_setting_name" id="wporg_setting_name" type="checkbox" value="1" class="code" ' . checked( 1, get_option( 'wporg_setting_name' ), false ) . ' /> <label for="wporg_setting_name">Explanation text</label>';
}
所有这些代码应进行的图形表示
外部参考
- WordPress设置API 由Konstantin Kovshenin,2012年10月23日
- 将设置API纳入WordPress主题 奇普·贝内特(Chip Bennett),2011年2月
- 设置API解释了 大卫·格威尔(David Gwyer)
- WordPress设置API教程 由奥托(Otto)
- 使用register_setting()处理插件选项 由Ozh
- WordPress设置API的介绍 由鲍格努(Bobgneu)
- 使用设置API: 第1部分,第2部分 经过 莎拉·诺伯(Sarah Neuber)
- 使用WordPress的基于类的设置 弗朗西斯·亚科尼洛(Francis Yaconiello)
- 在单个设置屏幕上添加多个部分 由Mathieu decaffmeyer
- 在单个设置屏幕上添加多个表单 由Mathieu decaffmeyer
- WordPress设置API的完整指南 汤姆·麦克法林(Tom McFarlin),2012年1月31日
- WordPress设置API备忘单 肯尼斯·奥德尔(Kenneth Odle),2015年7月16日