我编写了一个简单的测试代码,用于测试使用设置API保存数据,但它似乎不起作用。这真的快把我逼疯了。请帮我指出问题所在,谢谢!
function test_add_options_page() {
add_menu_page(
\'Test Save Option\',
\'Test Save\',
\'manage_options\',
\'testpage\',
\'test_save_page\'
);
}
add_action(\'admin_menu\', \'test_add_options_page\');
function test_save_page() {
?>
<form action="options.php" method="post">
<?php
settings_errors();
settings_fields(\'testpage\');
do_settings_sections(\'testpage\');
submit_button();
?>
</form>
<?php
}
function test_add_settings() {
add_settings_section(
\'section_1\',
\'Section 1\',
\'output_section_desc\',
\'testpage\'
);
add_settings_field(
\'field_id\',
\'Field Title\',
\'add_field_callback\',
\'testpage\',
\'section_1\'
);
register_setting(\'testpage\', \'testpage\');
}
add_action(\'admin_init\', \'test_add_settings\');
function output_section_desc() {
echo \'Section Description...\';
}
function add_field_callback() {
echo \'<input type="test" id="field_id" />\';
}
最合适的回答,由SO网友:Johannes Pille 整理而成
首先,您的输入字段缺少name
属性
Theid
属性是一个唯一标识符,主要由访问者的浏览器使用,通过CSS或JS以元素为目标
Thename
属性是要在中使用的表单元素的标识符POST
或GET
申请表格提交。
而且test
不是有效的输入类型。
到目前为止,这是通用的,而不是特定于Settings API.
因此,您的回调应该如下所示:
function add_field_callback() {
echo \'<input type="text" id="field_id" name="testpage[\\\'field_id\\\']"/>\';
}
设置API将选项保存在选项组中。您定义了要调用的组
\'testpage\'
. 因此,要检索保存的值,您可以按照以下步骤进行操作:
$testpage_values = get_option( \'testpage\' );
$field_value = isset( $testpage_values[\'field_id\'] ) ? $testpage_values[\'field_id\'] : \'Not set.\';
echo $field_value;