如果这个问题本身完全无关,请原谅,但我会尽我所能指出我面临的问题以及我想要实现的目标。
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> </span>Theme Options were saved</div>\');
} else {
$(\'.ajax-message\').ajaxMessage(\'<div class="message warning"><span> </span>Theme Options could not be saved</div>\');
}
});
return false;
}
}
});
无论如何,我希望我足够清楚;如果我忘了什么,请告诉我<提前谢谢大家,克里斯
最合适的回答,由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. 它涵盖了几乎所有内容,包括选项卡。
这里也有很多很棒的信息->ajax 在WordPress Ajax上。