我创建了包含两个管理页面的插件。当我在一个管理页面上更改并保存设置时,wordpress会删除另一个管理页面中的设置。
我注册设置
register_setting( SETTINGS_GROUP, SETTING_1);
register_setting( SETTINGS_GROUP, SETTING_2);
每个页面都有带输入的表单
<form class="roles-settings" action="options.php" method="post">
<?php settings_fields( SETTINGS_GROUP ); ?>
<?php do_settings_sections( SETTINGS_GROUP ); ?>
...inputs...
</form>
我用pre_update_option钩子解决了它(请参见下文),但我认为这不是处理事情的方法。
function update_option($newValue, $oldValue) {
if ($newValue == null) {
return $oldValue;
}
return $newValue;
}
add_filter('pre_update_option_'. SETTING_1, 'update_option', 10, 2);
add_filter('pre_update_option_'. SETTING_2, 'update_option', 10, 2);
我认为我第一次看到这种行为时,我更新到Wordpress 4.7.1
有没有更“自然”的方式来解决这个问题?