在管理后端页面中,我将一些设置保存在多维数组中,更新它们,然后再次将它们保存在AJAX回调函数中。问题是保存的设置是空的,但如果我将数组保存到其他选项,它就会工作。我把它归结为下面的代码。
public function my_ajax_callback() {
$options = get_option(\'user_manager_options\');
// Saves the multidimensional array returned above. Excellent.
update_option(\'test_option\', $options);
// Has a completely blank value in the database. Terrible and illogical.
update_option(\'user_manager_options\', $options);
die();
}
这毫无意义,我现在已经花了好几个小时。我用可能不起作用的_serialize序列化了数组。
SO网友:Peter Bushnell
我发现,在注册register\\u setting时,第二个参数是您将要保存和更新的设置的名称,该参数在这里传递,以将其列入白名单,防止在插件之外更新。AJAX回调被认为在插件之外。
我的寄存器设置如下,第二个选项与我问题中的get\\u选项相同。对于我将要更改的设置,我将使用不同的名称。
register_setting(
\'user_manager_group\',
\'user_manager_options\',
array($this, \'sanitize\')
);