我在选项表中创建了一个选项,并试图保存自定义设置页面中的数据,但没有保存。
下面是我添加字段和节及其各自回调函数的代码。
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>
最合适的回答,由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 如果您还没有这样做。