register_setting and AJAX?

时间:2011-12-31 作者:cr0z3r

如果这个问题本身完全无关,请原谅,但我会尽我所能指出我面临的问题以及我想要实现的目标。

Scenario: 我有一个自定义主题选项的面板,它使用自定义选项卡
Goal: 每当用户保存面板的选项时,页面和面板的选项卡应保持原样(即不重新加载,也不将用户带回初始选项卡)。我几乎完全确定这是与AJAX相关的,因此是标题。

这是我的面板的PHP代码:http://pastie.org/3102112

这就是使选项卡工作的JS(为了这个示例,选项卡本身工作得完美无缺):

$(\'div#options_tabs div.block\').hide();
$(\'ul.options_tabs li:first\').addClass(\'active\').show();
$(\'div#options_tabs div.block:first\').show();

$(\'ul.options_tabs li\').click(function() {

    $(\'ul.options_tabs li\').removeClass(\'active\');
    $(this).addClass(\'active\');
    $(\'div#options_tabs div.block\').fadeOut(100);

    var activeTab = $(this).find(\'a\').attr(\'href\');
    $(activeTab).fadeIn();
    return false;
});
最后,我尝试调整选项卡和保存面板的方式(注意,我真的不知道应该在AJAX操作中放置什么;我还觉得我可能完全偏离了轨道,因为我的面板使用了WordPress内置的register\\u设置方法):

(function ($) {

inlineEditOption = {
    init: function () {
        $(\'.save-options\', \'#the-theme-options\').live(\'click\', function () {
            inlineEditOption.save_options(this);
            return false;
        });
    },

    save_options: function (e) {
      var d = {
        action: "options.php"
      };
      b = $(\':input\').serialize();
      d = b + "&" + $.param(d);
      $.post(ajaxurl, d, function (r) {
        if (r != -1) {
          $(\'.ajax-message\').ajaxMessage(\'<div class="message"><span>&nbsp;</span>Theme Options were saved</div>\');
        } else {
          $(\'.ajax-message\').ajaxMessage(\'<div class="message warning"><span>&nbsp;</span>Theme Options could not be saved</div>\');
        }
      });
      return false;
    }

}
});
无论如何,我希望我足够清楚;如果我忘了什么,请告诉我<提前谢谢大家,克里斯

1 个回复
最合适的回答,由SO网友:Chris_O 整理而成

WordPress已经为管理/选项页选项卡提供了一个非常好的API。没有必要在那辆车上重新发明轮子。

您的Ajax操作是“options.php”,您需要一个链接到php函数的操作,该函数包含在add_action( \'wp_ajax_YOUR-ACTION-NAME*\', \'your_php_function\');

*YOUR-ACTION-NAME 是本地化脚本时定义的操作

看看Chip Bennet关于Settings API. 它涵盖了几乎所有内容,包括选项卡。

这里也有很多很棒的信息-> 在WordPress Ajax上。

结束

相关推荐

如何为AJAX请求在非WP脚本中正确加载WordPress

我想在我的主题中加入一个脚本,ajax。php,我想使用ajax从其他前端页面加载或访问它。在ajax中。php我想访问核心WP函数,如get\\u posts()、do\\u shortcode()等。也就是说,我需要在脚本上加载WordPress。传统上,我在管理员中设置了一个页面,并为其提供了一个自定义模板,这样我就可以将ajax请求发送到www.site。com/ajax和自定义模板处理请求。虽然这样做很好,但我很确定这不是在WP前端处理ajax的最有效或最安全的方法,但我不确定如何正确地处理它。