在我的funcitons.php文件中,我有一个响应ajax调用和返回帖子的功能:
的functions.php:
function returnPosts(){
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
get_template_part('content', get_post_format());
}
} else {
get_template_part( 'content', 'none' );
}
exit();
}
add_action('wp_ajax_returnPosts', 'returnPosts');
add_action('wp_ajax_nopriv_returnPosts', 'returnPosts');
Javascript(在index.php中):
jQuery.ajax({
type:"POST",
url: "<?php echo admin_url("admin-ajax.php"); ?>",
data: {"action": "returnPosts"},
success:function(results){
// Work with results
}
});
但是当我通过JS调用此函数时,我总是从content-none.php文件中获取内容。
答案 0 :(得分:4)
看起来你假设AJAX调用已经知道页面上已经显示了什么帖子,因为你正在检查have_posts()而不创建自己的WP_Query。但是一个AJAX调用作为一个单独的HTTP请求进入,它对前一页的唯一了解就是你告诉它的事情。
另外,要在AJAX调用中传递“action”名称,请尝试传递当前帖子的ID。我不是在真正的计算机前测试这个,但这应该可以正常运行,假设你在输出jQuery代码时进入循环:
data: {"action": "returnPosts", "p": "<?php the_ID(); ?>"},
答案 1 :(得分:-2)
快速解决方法是:
include("../../../wp-load.php");
&lt; - 猜测wordpress文件的位置。
位于php文件的顶部。