我有一个简单的ajax调用,在我的WordPress网站上加载3个帖子,每次点击前3个结果总是跳过数据库中的第一个帖子。
Ajax在第0页设置,每页添加3个帖子。所以我希望输出是前三个帖子,但是它会跳过第一个帖子并输出下一个帖子。然后它将从那里正常工作。
为什么会在第0页跳过第一个结果?
Ajax通话 -
var ajaxUrl = "<?php echo admin_url('admin-ajax.php')?>";
var page = 0; // What page we are on.
var ppp = 3; // Post per page
$("#more_posts").on("click",function(){ // When Load More Button is pressed.
event.preventDefault();
$("#more_posts").attr("disabled",true); // Disable the button, temp.
$.post(ajaxUrl, {
action:"more_post_ajax",
offset: (page * ppp) + 1,
ppp: ppp
}).success(function(posts){
page++;
if(posts === '') {
$("#more_posts").hide();
} else {
$(".showroom-loop").append(posts); // Which div to insert the posts
}
$("#more_posts").attr("disabled",false);
});
});
这是我的wp args功能 -
function more_post_ajax(){
$offset = $_POST["offset"];
$ppp = $_POST["ppp"];
header("Content-Type: text/html");
$args = array(
'post_type' => 'showroom',
'posts_per_page' => $ppp,
'offset' => $offset,
);
$loop = new WP_Query($args);
while ($loop->have_posts()) {
$loop->the_post();
echo "<h3>";the_title();echo "</h3> <hr>";
}
exit;
}
add_action('wp_ajax_nopriv_more_post_ajax', 'more_post_ajax');
add_action('wp_ajax_more_post_ajax', 'more_post_ajax');
答案 0 :(得分:1)
我认为这是因为你的代码总是在偏移量上加1。
在你的javascript中,不应该这样:
offset: (page * ppp) + 1,
是
offset: (page * ppp),