WP po​​sts_per_page&偏移跳过第一篇文章

时间:2017-11-20 10:41:23

标签: php jquery ajax wordpress

我有一个简单的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');

1 个答案:

答案 0 :(得分:1)

我认为这是因为你的代码总是在偏移量上加1。

在你的javascript中,不应该这样:

offset: (page * ppp) + 1,

offset: (page * ppp),