后端中的AJAX调用导致空的UPDATE_OPTION

时间:2016-07-29 作者:Peter Bushnell

在管理后端页面中,我将一些设置保存在多维数组中,更新它们,然后再次将它们保存在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序列化了数组。

1 个回复
SO网友:Peter Bushnell

我发现,在注册register\\u setting时,第二个参数是您将要保存和更新的设置的名称,该参数在这里传递,以将其列入白名单,防止在插件之外更新。AJAX回调被认为在插件之外。

我的寄存器设置如下,第二个选项与我问题中的get\\u选项相同。对于我将要更改的设置,我将使用不同的名称。

register_setting(
    \'user_manager_group\',
     \'user_manager_options\', 
     array($this, \'sanitize\')
);

相关推荐

如何在后台运行wp_sert_post()&wpdb?

我创建了一个代码,从远程API获取数据,然后回显某些数据&;将这些数据导入post type 使用wp_insert_post() &;post meta**使用wpdb->query().这是我当前的代码:$imdbid = $_GET[\'id\']; $string = file_get_contents("http://www.omdbapi.com/?i=".$imdbid."&apikey=API_KEY_HEREKEYVALUE