javascript - wordpress 和 wp_query 中的 ajax

标签 javascript php ajax wordpress

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

最佳答案

看起来您假设 AJAX 调用已经知道页面上显示的是什么帖子,因为您正在检查 have_posts() 而不创建自己的 WP_Query。但是 AJAX 调用作为单独的 HTTP 请求进入,它唯一知道的关于上一页的信息就是您告诉它的信息。

除了在 AJAX 调用中传递您的“操作”名称外,请尝试传递当前帖子的 ID。我没有在真正的计算机前进行测试,但是假设输出 jQuery 代码时您在循环中,这应该可以工作:

data: {"action": "returnPosts", "p": "<?php the_ID(); ?>"},

关于javascript - wordpress 和 wp_query 中的 ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18931029/

相关文章:

php - 自定义 Facebook 分享按钮

javascript - 如何通过jquery从sevlet接收信息而不发送请求

javascript - $.ajax 无法接收 JSON HTTP 响应

javascript - 悬停时以表格格式显示隐藏值的工具提示

php - 在 PHP 中显示数组值

选中输入复选框时,Javascript 启用 html

php - 尝试在 CASE WHEN mysql php 中使用 CASE WHEN ?

javascript - 如何获取特定的表 id 到 JavaScript?

javascript - 基于索引的同位素自定义排序在过滤器后不起作用

javascript - Javascript中 "new"关键字的限制