在我的函数.php文件中,我有响应ajax调用和返回帖子的函数:
功能.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(在索引中.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文件中获取内容。
看起来您假设 AJAX 调用会知道页面上已经显示了什么帖子,因为您正在检查 have_posts() 而不创建自己的WP_Query。但是 AJAX 调用作为单独的 HTTP 请求进来,它唯一知道的关于上一页的事情就是你告诉它的事情。
除了在 AJAX 调用中传递您的"操作"名称之外,请尝试传递当前帖子的 ID。我不是在真正的计算机前测试这个,但是假设你在输出jQuery代码时在一个循环中,这应该可以工作:
data: {"action": "returnPosts", "p": "<?php the_ID(); ?>"},
快速解决方法是:
include("../../../wp-load.php");
<-猜测WordPress文件的位置。
在 PHP 文件的顶部。