wordpress和wp_query中的ajax

时间:2013-09-21 09:26:08

标签: javascript php ajax wordpress

在我的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文件中获取内容。

2 个答案:

答案 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文件的顶部。