WordPress选项API

0条评论

简介

WordPress 2.7开放了一个选项API,用户可以在已有的WordPress控制板页面中添加新设置选项或选项组。注意:在控制板的已有页面上添加新选项,而非新开辟一个页面。

设置API相关函数在 wp-admin/includes/plugin.phpwp-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