我最终修改了档案。php文件,在正常请求时通过ajax提供不同的内容。
if ((isset($_SERVER[\'HTTP_X_REQUESTED_WITH\']) && strtolower($_SERVER[\'HTTP_X_REQUESTED_WITH\']) == \'xmlhttprequest\')) {
$response = array();
$response[\'posts\'] = \'\';
if (have_posts()) {
ob_start();
while (have_posts()) {
the_post();
get_template_part(\'content\');
}
$response[\'posts\'] .= ob_get_clean();
} else {
//no posts
$response[\'posts\'] .= \'nothing\';
}
echo json_encode($response);
} else {
//normal template code here
}
之后,通过JS获取项目很容易:
$.ajax ({
type: "GET",
url: more_ajax_url,
data: {},
dataType: \'json\',
success: function (result) {
$(\'#archive_container\').append(result.items);
}
});
还有一些代码可以将链接传递到下一页,但这应该不难实现。
此方法的优点是请求由wordpress及其所有过滤器和操作完全处理。它比$.load
, 因为没有从服务器传递不必要的数据。