WordPress设置API-options.php中没有字段

时间:2015-11-28 作者:Ruwantha

我正在创建一个小的WordPress插件。我创建了设置页面,设置页面中有两个用户输入。

我创建了两种选项类型。那些是rmpm_post_newcountrmpm_post_newname. 激活此插件后,中没有rmpm\\u post\\u newcount和rmpm\\u post\\u newnameoption.php page.

原因是什么?

// Specify Hooks/Filters
register_activation_hook(__FILE__, \'rmpm_add_defaults_options\');
add_action(\'admin_init\', \'rmpm_init_fn\' );
add_action(\'admin_menu\', \'rmpm_add_page\');

// Define default option settings
function rmpm_add_defaults_options() {
    $tmp = get_option(\'plugin_options\');

    $arr = array("rmpm_post_newcount" => "10", "rmpm_post_newname" => "My Blog Posts");
    update_option(\'plugin_options\', $arr);

}

// Register our settings. Add the settings section, and settings fields
function rmpm_init_fn(){
    register_setting(\'plugin_options\', \'plugin_options\', \'plugin_options_validate\' );
    add_settings_section(\'main_section\', \'Main Settings\', \'rmpm_section_text_fn\', __FILE__);
    add_settings_field(\'rmpm_plugin_count\', \'Display Posts Count\', \'rmpm_setting_count_fn\', __FILE__, \'main_section\');
    add_settings_field(\'rmpm_plugin_name\', \'Display Name\', \'rmpm_setting_name_fn\', __FILE__, \'main_section\');
}

// Add sub page to the Settings Menu
function rmpm_add_page() {
    add_options_page(\'Recent Posts BP Profile\', \'Recent Posts BP Profile\', \'administrator\', __FILE__, \'rmpm_options_page_fn\');
}

// ************************************************************************************************************

// Callback functions

// Section HTML, displayed before the first option
function  rmpm_section_text_fn() {
    echo \'<p>Theese are some setting.</p>\';
}

// TEXTBOX - Name: plugin_options[text_string]
function rmpm_setting_count_fn() {
    $options = get_option(\'plugin_options\');
    echo "<input id=\'rmpm_plugin_count\' name=\'plugin_options[rmpm_post_newcount]\' size=\'40\' type=\'text\' value=\'{$options[\'rmpm_post_newcount\']}\' />";
}

// PASSWORD-TEXTBOX - Name: plugin_options[text_string2]
function rmpm_setting_name_fn() {
    $options = get_option(\'plugin_options\');
    echo "<input id=\'rmpm_plugin_name\' name=\'plugin_options[rmpm_post_newname]\' size=\'40\' type=\'text\' value=\'{$options[\'rmpm_post_newname\']}\' />";
}

function rmpm_options_page_fn() {
?>
    <div class="wrap">
        <div class="icon32" id="icon-options-general"><br></div>
        <h2>Setting Page</h2>
        Some optional text here explaining the overall purpose of the options and what they relate to etc.
        <form action="options.php" method="post">
        <?php settings_fields(\'plugin_options\'); ?>
        <?php do_settings_sections(__FILE__); ?>
        <p class="submit">
            <input name="Submit" type="submit" class="button-primary" value="<?php esc_attr_e(\'Save Changes\'); ?>" />
        </p>
        </form>
    </div>
<?php
}

1 个回复
SO网友:Mark Kaplun

在里面register_settings 您需要传递所使用选项的名称。现在看来,您离开时的呼叫与从任何地方复制时的呼叫一样&;贴上它(这里一点也不批评)。如果您需要两种选择(为什么?)然后你需要调用它两次,每个选项调用一次。

选项名称是函数的第二个参数,第一个参数可以是您想要的任何参数,但它必须与您将在设置页面本身中使用的参数相同。最佳做法是使用将更改设置的设置页面的slug,以确保其唯一性并便于识别上下文。

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请