Cannot display settings field

时间:2017-04-03 作者:geoB

带有设置页的插件不会呈现其设置字段rma_base_url. 不会引发任何错误。在设置中创建页面,呈现标题和提交按钮。

代码:

add_action(\'admin_menu\', \'remote_member_auth_menu\');

function remote_member_auth_menu() {
    add_options_page(\'Remote Member Auth Options\', \'Remote Member Auth\', \'manage_options\', \'rma\', \'remote_member_auth_options\');
}

function remote_member_auth_options() {
    if (!current_user_can(\'manage_options\')) {
        wp_die(__(\'You do not have sufficient permissions to access this page.\'));
    }
    echo \'<div class="wrap">\' .
        \'<h3>Remote Member Authentication Settings</h3>\' .
        \'<form method="post" action="options.php">\';
    settings_fields(\'rma_options\');
    do_settings_sections(\'rma\');
    submit_button(\'Set base url\');
    echo \'</form>\' .
        \'</div>\';
}

function register_rma_settings() {
    register_setting(\'rma_options\', \'rma_base_url\');
    add_settings_field(\'rma_base_url\', \'Base URL\', \'rma_base_url_string\', \'rma\');
}

add_action(\'admin_init\', \'register_rma_settings\');

function rma_base_url_string() {
    $options = get_option(\'rma_options\');
    echo "<input id=\'rma_base_url\' name=\'rma_options[rma_base_url]\' size=\'40\' type=\'text\' value=\'{$options[\'rma_base_url\']}\' />";
}
编辑:使用修改表单代码echo do_settings_sections(\'rma\') ? \'something\' : \'nothing\'; 渲染nothing, 所以do_settings_sections(\'rma\') 为空。echo strlen(do_settings_sections(\'rma\')) 渲染0.

1 个回复
最合适的回答,由SO网友:LWS-Mo 整理而成

使用echo do\\u settings\\u sections(“rma”)修改表单代码?\'“某物”:“什么都没有”;不渲染任何内容,因此do\\u settings\\u sections(“rma”)为空。

考虑到这一点,我看不到您在发布的代码中添加节
如果将节添加到register_rma_settings() 函数,然后将此节添加到add_settings_field(), 输入将显示。

function register_rma_settings() {

    // add_settings_section( $id, $title, $callback, $page );
    // you can use $callback to add some descriptive text otherwise leave it blank, \'\'
    add_settings_section( \'rma_section\', \'some title\', \'section_description\', \'rma\' );

    register_setting(\'rma_options\', \'rma_base_url\');

    // we also added our new section id "rma_section" at last argument to the following function
    add_settings_field(\'rma_base_url\', \'Base URL\', \'rma_base_url_string\', \'rma\', \'rma_section\');
}
是否不想使用任何节,或者为什么不创建一个节Update
@geoB是的,首先我还有一个印象,您不一定需要在add_settings_field() 功能<当我们阅读有关该函数的法典时,我们会看到section 参数为optional, 喜欢$section (string) (optional)
BUT 我们还可以看到,如果我们没有添加section, 参数将使用default.

我还试着特别插入\'default\' 作为节参数,但该设置不会显示。(即使不在其他设置页面上)
我尝试插入\'\' 作为节参数,但也没有显示任何内容。

所以看起来section 不是真正可选的。

相关推荐

更新页面(update-core.php)和插件页面(plugins.php)恢复到主页

我在Wordpress网站的管理视图中收到通知,我有一个网站和插件的可用更新(在我的网络管理仪表板中,在“插件”和“更新”旁边的红色圆圈中有“1”)。。。但当我尝试同时转到“更新”页和;插件页面,是否显示主页?此时的URL为http:///wp-admin/network/update-core.php/和http:///wp-admin/plugins.php/分别地因此,我永远无法到达真正的更新页面,也无法更新我的Wordpress或插件。如何显示更新或插件页面?