我正在尝试使用新的设置API和基于类的插件来添加设置页面。这是我目前掌握的代码:
class simple_sample_plugin{
function simple_sample_plugin()
{
add_action(\'init\', array(&$this, \'init\'));
}
function init()
{
add_action(\'admin_menu\', array(&$this, \'admin_menu\'));
add_action(\'admin_init\', array(&$this, \'admin_init\'));
}
function admin_init()
{
register_setting(
\'sample\' // A settings group name. Must exist prior to the register_setting call.
,\'sample_options\' // The name of an option to sanitize and save.
,array($this, \'set_options\') // A callback function that sanitizes the option\'s value.
);
// Register our settings field group
add_settings_section(
\'sample_section1\', // String for use in the \'id\' attribute of tags.
\'Section 1\', // Title of the section.
\'__return_false\', // Function that fills the section with the desired content. The function should echo its output.
\'sample\' // The type of settings page on which to show the section (general, reading, writing, media etc.)
);
// Register our individual settings fields
add_settings_field(
\'color_scheme\' // String for use in the \'id\' attribute of tags.
,\'Color Scheme\' // Title of the field.
,array($this, \'color_scheme\') // Function that fills the field with the desired inputs as part of the larger form. Passed a single argument, the $args array. Name and id of the input should match the $id given to this function. The function should echo its output.
,\'sample\' // The type of settings page on which to show the field (general, reading, writing, ...).
,\'sample_section1\' // The section of the settings page in which to show the box (default or a section you added with add_settings_section, look at the page in the source to see what the existing ones are.)
,array() // $args - Additional arguments that are passed to the $callback function. The \'label_for\' key can be used to give the field a label different from $title.
);
}
function set_options()
{
}
function color_scheme()
{
echo "<textarea type=\'text\' rows=\'2\' cols=\'80\' name=\'sample_options[color_scheme]\'>";
echo time();
echo "</textarea>";
}
function admin_menu()
{
add_options_page(
__(\'sample\') //page title
,__(\'sample\') //menu title
,\'edit_posts\' //capability
,\'sample\' //menu-slug
,array(&$this, \'settings_page\') //function callback
);
}
function settings_page()
{ ?>
<div class="wrap">
<h2>sample Options</h2>
<form class="myform" method="post" action="options.php">
<?php
settings_fields(\'sample\');
do_settings_sections(\'sample_section1\');
?>
<script type="text/javascript">
jQuery(\'.myform input:hidden\').prop(\'type\',\'text\');
</script>
<input type="submit" value="Save" />
</form>
</div>
<?php
}
}
global $simple_sample_plugin;
$simple_sample_plugin = new simple_sample_plugin();
我一直在努力保持它尽可能的干净和简单,我也根据大量的教程和文档进行了尝试。
我还有一个jQuery行显示隐藏字段。
但唯一的问题是,这不起作用。也就是说,它添加了一个示例选项页面,但字段值不存在。
屏幕截图:
screenshot-with-shadow.png http://img600.imageshack.us/img600/4526/screenshotwithshadow.png
帮助我做错了什么?我已经试了24小时了。