设置页面-选项不会保存在数据库中

时间:2020-05-24 作者:JayDev95

我在选项表中创建了一个选项,并试图保存自定义设置页面中的数据,但没有保存。

下面是我添加字段和节及其各自回调函数的代码。

    function wcs_settings() {

    if( !get_option( \'wcs_settings\' ) ) {
        add_option( \'wcs_settings\' );
    }


    add_settings_section(
        \'front_page_settings_section\',
        \'Front Page Settings\',
        \'front_page_callback\',
        \'wcs_settings_page\',
    );

    add_settings_field(
        \'front-page-slogan\',
        \'Front Page Slogan\',
        \'front_page_slogan_callback\',
        \'wcs_settings_page\',
        \'front_page_settings_section\',
    );

    register_setting(
        \'wcs_settings_page\',
        \'front-page-slogan\',
    );

}
add_action( \'admin_init\', \'wcs_settings\' );

// Callback functions

function front_page_callback() {
    echo \'<p>Front Page Setting for the theme.</p>\';
}


function front_page_slogan_callback() {

    $options = get_option( \'wcs_settings\' );

    $slogan = \'\';
    if( isset( $options[\'front-page-slogan\'] ) ) {
        $slogan = esc_html( $options[\'front-page-slogan\'] );
    }

    echo \'<input type="text" id="front_page_slogan_id" name="wcs_settings[front-page-slogan]" value="\' . $slogan . \'" />\';

}
这是我正在输出到自定义设置页面的表单:

<div class="wrap">

<h1><?php esc_html_e( get_admin_page_title() ); ?></h1>

<form method="post" action="options.php">
    <!-- Display necessary hidden fields for settings -->
    <?php settings_fields( \'wcs_settings_page\' ) // Slug of page             ?>
    <!-- Display the settings sections for the page -->
    <?php do_settings_sections( \'wcs_settings_page\' ); // Slug of Page       ?>
    <!-- Default Submit Button-->
    <?php submit_button(); ?>
</form>

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

问题是您没有传递正确的数据库选项名称:

register_setting(
    \'wcs_settings_page\', // option group
    \'front-page-slogan\', // database option name
);
所以看看get_option() 调用和HTML输入name 在您的front_page_slogan_callback(), 正确的选项名称为wcs_settings:

register_setting(
    \'wcs_settings_page\', // option group
    \'wcs_settings\',      // database option name
);
检查reference 如果您还没有这样做。

相关推荐