虽然 Raphael 在他的回答中已经说明了背后的想法,但我还是加入了一些细节。
在 Wordpress 中使用 AJAX 的最佳方式是使用其内置的处理方式,通过向wp-admin/admin-ajax.php发送请求(我知道文件名的“admin”部分有点误导。但是前端(查看端)和admin中的所有请求都可以在admin-ajax.php中处理,有很多好处,尤其是在安全方面。而对于将要执行的服务器端代码php,它应该放在functions.php。
您的 jQuery 代码将如下所示:
$(document).ready(function() {
$('.tabs a').click(function(e) {
e.preventDefault();
var tab_id = $(this).attr('id');
$.ajax({
type: "GET",
url: "wp-admin/admin-ajax.php",
dataType: 'html',
data: ({ action: 'yourFunction', id: tab_id}),
success: function(data){
$('#tab'+tab_id).html(data);
},
error: function(data)
{
alert("Error!");
return false;
}
});
});
});
在您的主题的functions.php 中(或直接在您的插件文件中),添加:
add_action('wp_ajax_yourFunction', 'yourFunction');
add_action('wp_ajax_nopriv_yourFunction', 'yourFunction');
并在同一个文件中定义yourFunction回调函数,如下所示:
function yourFunction() {
// get id
// your php code
die();
}
对于 javascript 部分,请查看 ajax() 及其简写形式 get()。对于在 Wordpress 中使用 AJAX 的最佳实践,网络上有很多教程(我会回来提供一个)。祝你好运
编辑:
正如 Karl 所说,您可以使用.load() 代替ajax(),需要注意的是.load() 只是$.ajax() 的包装。它添加了允许您定义在文档中插入返回数据的位置的功能。因此真的只有在调用只会导致 HTML 时才可用。它的调用方式与另一个略有不同,因为它是一种绑定到特定 jQuery 包装的 DOM 元素的方法。因此,可以这样做:$('#divWantingContent').load(...) 内部调用 .ajax()。
但我最初的答案是关于如何根据 Wordpress best practices 组织 php 代码。