无法使用设置API将设置保存到数据库

时间:2013-07-04 作者:user34894

我编写了一个简单的测试代码,用于测试使用设置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" />\';
}

1 个回复
最合适的回答,由SO网友:Johannes Pille 整理而成

首先,您的输入字段缺少name 属性
Theid 属性是一个唯一标识符,主要由访问者的浏览器使用,通过CSS或JS以元素为目标
Thename 属性是要在中使用的表单元素的标识符POSTGET 申请表格提交。

而且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;

结束

相关推荐