我正在写一个主题并添加一个包含多个子菜单页的菜单。它工作得很好,只是我试图只使用一个数组将所有设置保存到数据库中,这会导致一些问题。
问题是,保存每个子菜单页时,它只将该页中的值保存到数组中,并从之前存储的其他页中删除所有其他值,因此数组最终一次只保存一页中的值。
以下是创建页面和注册设置的函数。
add_action(\'admin_menu\', \'theme_add_admin\');
add_action(\'admin_init\', \'register_theme_settings\');
function theme_add_admin() {
add_menu_page( \'Theme Settings\', \'Theme Settings\', \'update_themes\', \'themesettings\', \'settings_messages_page\');
add_submenu_page( \'themesettings\', \'messages\', \'Titles and Messages\', \'update_themes\', \'themesettings\');
add_submenu_page( \'themesettings\', \'layout\', \'Layout\', \'update_themes\', \'settings_layout\', \'settings_layout_page\');
add_settings_messages();
add_settings_layout();
}
function register_theme_settings() {
register_setting( THEMENAME . \'_settingsgroup\', THEMENAME . \'_settings\', \'validate_options\' );
}
在add\\u settings\\u messages()和add\\u settings\\u layout中,我添加了节和字段:
function add_settings_layout() {
add_settings_section(\'layout_styles\', \'Archive Layout\', \'settings_layout_styles_fn\', __FILE__);
add_settings_field(\'layout_index\', \'Home Page Post Style\', \'layout_home_fn\', __FILE__, \'layout_styles\');
add_settings_field(\'layout_paged\', \'Paged Archives Post Style\', \'layout_paged_fn\', __FILE__, \'layout_styles\');
}
以下是页面显示功能:
function settings_layout_page() {
?>
<div class="wrap">
<div class="icon32" id="icon-options-general"><br></div>
<h2>Layout</h2>
<form action="options.php" method="post">
<?php settings_fields(THEMENAME . \'_settingsgroup\'); ?>
<?php do_settings_sections(\'settings_layout\'); ?>
<p class="submit">
<input name="Submit" type="submit" class="button-primary" value="<?php esc_attr_e(\'Save Changes\'); ?>" />
</p>
</form>
</div>
<?php
}
我可能错过了一些明显的东西,如果有任何帮助,我们将不胜感激。