如果要添加设置页面(或向和现有设置页面添加选项),请使用settings api:
1。注册设置并添加分区:
add_action(\'admin_init\', \'plugin_admin_init\');
function plugin_admin_init(){
register_setting( \'wpse51578_options_group\', \'my_option_field_name\', \'wpse51578_validation_callback\' );
add_settings_section(\'wpse51578_main_id\', \'My Main Settings\', \'wpse51578_main_settings_cb\', \'wpse51578_option_page\');
}
The
\'my_option_field_name\'
整型
register_settings
选项字段应具有的名称:例如。
<input type="text" name="my_option_field name[A]"><br />
<input type="text" name="my_option_field name[B]"><br />
The
add_settings_section
为页面注册设置部分。当然,您可以在一个页面上有多个部分。
2。输出表单元素wpse51578_main_settings_cb
中的回调函数add_settings_section
负责创建该节的输出。您可以输出其中的表单元素(或使用add_settings_field
). No form
tags should be used in this bit for this bit. 例如:
<?php
function wpse51578_main_settings_cb(){
$my_options = get_option(\'wpse51578_options_group\',array());
$A = ( isset($my_options[\'A\']) ? esc_html($my_options[\'A\']) : \'default-for-a\';
$B = ( isset($my_options[\'B\']) ? esc_html($my_options[\'B\']) : \'default-for-b\';
?>
Location A <input type="text" value="<?php echo $A; ?>" name="my_option_field name[A]"><br />
Location B <input type="text" value="<?php echo $B; ?>" name="my_option_field name[B]"><br />
<?php
}
?>
3。输出设置页面
添加页面时,定义了一个回调以输出页面内容。这就是该函数应该执行的操作(使用
plugin_options_page
如果您在问题中给出:
<?php
function plugin_options_page() {
?>
<h2>My custom plugin</h2>
Options relating to the Custom Plugin.
<form action="options.php" method="post">
<?php settings_fields(\'wpse51578_options_group\'); ?>
<?php do_settings_sections(\'wpse51578_option_page\'); ?>
<input name="Submit" type="submit" value="<?php esc_attr_e(\'Save Changes\'); ?>" />
</form>
<?php
}?>
4。验证现在WordPress在您的页面上执行临时检查,并(几乎)处理表单的所有处理。然而,它需要你做一件事-validate. 注册设置时,请指定验证回调函数:wpse51578_validation_callback
在本例中。
此函数将从输入名称所在的表单字段接收的值数组传递给my_option_field_name
(注册设置时也是如此)。因此,例如,您可能希望使用以下数组:
array(
\'A\' => \'some-input\', //value for A
\'B\' => \'some-input-for b\', //value for B
);
它的工作是检查数组是否包含“正确”的值(这意味着什么取决于上下文:例如,如果它是一个电子邮件字段,那么该值实际上是一个电子邮件地址吗?)。这里不需要卫生设施(但在输出数据的地方也需要卫生设施)。
function wpse51578_validation_callback( $dirty ){
//$dirty is what you receive from the form
$clean = array();
//Sanitize data and pass it to the $clean array
return $clean;
}
其他资源:关于使用设置API的最佳教程可能是:
http://ottodestruct.com/blog/2009/wordpress-settings-api-tutorial/请注意,我没有测试上述内容,但它在程序上是正确的,可能只是输入错误或小错误