简介
WordPress 2.7开放了一个选项API,用户可以在已有的WordPress控制板页面中添加新设置选项或选项组。注意:在控制板的已有页面上添加新选项,而非新开辟一个页面。
设置API相关函数在 wp-admin/includes/plugin.php 与 wp-admin/includes/template.php中。
相关函数
设置注册/注销状况的函数
添加设置字段/选项组的函数
添加设置字段/选项
通过add_settings_field()函数,用户可以在WordPress已有页面上添加新的设置选项(简单地说,就是在wp_options数据库表中添加一个新选项,但用户拥有绝对管理权)。回调函数需要输出适当的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 —— 新字段所在设置页面的页面类型(general, reading, writing, ….)
- $section —— 新选项框所在选项组所在的设置页面(默认值,或用户用add_settings_section添加的新选项组,在源代码中查看页面以查看所有原有页面。)
- $args —— 其它参数
添加设置组
在设置页面上,多个设置选项可能会出现在同一个标题下,这样的一组选项被称为选项组。用户可以在插件的已有设置页面上添加新选项组,而不必新建设置页面。这样更易于维护插件,用户学习使用插件时也更加方便。只要在相关页面上及时更新新选项组的相关信息,就不会造成不良影响。
add_settings_section($id, $title, $callback, $page)
- $id —— 用在“id”标签属性中的字符串
- $title —— 新选项组的标题
- $callback —— 负责用预计内容填充选项组的函数。函数回应输出结果。
- $page —— 新选项组所在设置页面的页面类型(general, reading, writing, media等)
注册(register)设置
register_setting( $option_group, $option_name, $sanitize_callback )
unregister_setting( $option_group, $option_name, $sanitize_callback )
示例
添加一个选项组,该选项组中有一个新选项:
<?php
// ——————————————————————
// Add all your sections, fields and settings during admin_init
// ——————————————————————
//
function eg_settings_api_init() {
// Add the section to reading settings so we can add our fields to it
add_settings_section('eg_setting_section', 'Example settings section in reading', 'eg_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('eg_setting_name', 'Example setting Name', 'eg_setting_callback_function', 'reading', 'eg_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','eg_setting_name');
}// eg_settings_api_init()
add_action('admin_init', 'eg_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 eg_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 eg_setting_callback_function() {
$checked = "";
// Mark our checkbox as checked if the setting is already true
if (get_option('eg_setting_name'))
$checked = " checked='checked' ";
echo "<input {$checked} name='eg_setting_name' id='gv_thumbnails_insert_into_excerpt' type='checkbox'
value='eg_setting_name' class='code' /> Explanation text";
} // eg_setting_callback_function()
?>
相关资料
WordPress Settings API Tutorial
分类:中文手册