【发布时间】:2022-08-10 00:44:05
【问题描述】:
我正在开发我的第一个自定义 WP 插件,并且正在尝试使用 Settings API 注册设置。我已经遵循了许多指南,并且我已经成功地创建了一个管理菜单页面,其中包含在插件中定义的部分和字段,但是单个设置(在代码中它的 fbm_lockout_updates)不会保存,并且没有数据库中的表已为其创建。
在尝试了十几件事之后,我不确定自己哪里出错了。以下是为简洁而编辑的相关代码:
/* Create Menu */
add_action( \'admin_menu\', \'fbm_config_menu\' );
function fbm_config_menu() {
$page_title = \'Sample Plugin\';
$menu_title = \'Sample Plugin Config\';
$capability = \'manage_options\';
$menu_slug = \'fbm_config\';
$function = \'fbm_config_page\';
add_menu_page(
$page_title,
$menu_title,
$capability,
$menu_slug,
$function
);
}
/* Register Settings and Fields */
function fbm_register_settings() {
register_setting( \'fbm_config\', \'fbm_lockout_updates\');
add_settings_section(
\'fbm_restriction_section\',
\'Development Restrictions\',
\'fbm_restriction_callback\',
\'fbm_config\'
);
add_settings_field(
\'fbm_lockout_updates_field\',
\'Lockout Updates\',
\'fbm_lockout_field_callback\',
\'fbm_config\',
\'fbm_restriction_section\'
);
}
add_action( \'admin_init\', \'fbm_register_settings\' );
/* Settings Callbacks */
function fbm_restriction_callback() {
?>
<p><?php esc_html_e( \'Description of Setting Section\', \'fbm_config\' ); ?></p>
<?php
}
function fbm_lockout_field_callback() {
$setting = get_option(\'fbm_lockout_updates\');
?>
<input type=\"checkbox\" name=\"fbm_lockout_updates\" value=\"0\" <?php checked(\'1\', $setting); ?> >
<?php
}
/* Load Admin Page */
function fbm_config_page(){
if ( isset( $_GET[\'settings-updated\'] ) ) {
add_settings_error( \'fbm_con_messages\', \'fbm_con_message\', __( \'Settings Saved\', \'fbm_config\' ), \'updated\' );
}
settings_errors( \'fbm_con_messages\' );
?>
<div class=\"wrap\">
<h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
<form method=\"post\" action=\"options.php\">
<?php
settings_fields( \'fbm_config\' );
do_settings_sections( \'fbm_config\' );
submit_button( \'Save Settings\' );
?>
</form>
<div>
<?php }
?>
标签: php wordpress wordpress-plugin-creation