用无限滚动发布重复

时间:2014-12-09 17:39:48

标签: javascript php jquery ajax wordpress

我正在创建一个无限卷轴(wordpress帖子)。 如果您看到第一行书就是这一本:

enter image description here

但如果向下滚动,在“加载更多图书”之后,则会再次显示此图书。

所以它总是从头开始加载书籍(wordpress帖子),而不是连续加载帖子。

图书主页效果很好,您可以看到[这里] [3]。

在输入任何书籍(single.php)

后,问题是

知道问题在哪里,我该如何解决?

这是我正在使用的代码:

<div id="infinite-scroll">
<div id="infite-activities">
 <div class="row">
          <?php
            $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
          $args=array("post_type"=>"books","posts_per_page"=>"12");
           /*  $args["paged"]=( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1; */
            $args["paged"]=$paged;
            if(is_single())
                $args["orderby"]="date";
          $books=new WP_Query($args);
           while($books->have_posts()):$books->the_post();?>
          <div class="col-lg-3 col-md-3 col-xs-12 col-sm-3">
              <div class="book-grid-img">
                  <?php $default_attr = array('class'   => "img-responsive");?>
               <a href="<?php the_permalink();?>" title="<?php the_title();?>"> <?php the_post_thumbnail("books-grid",$default_attr);?></a>
              </div>
              <div class="box-desc-book">
                  <div class="book-title">
                     <?php the_title();?>
                     <span><?php the_field("autor");?></span>
                  </div>
              </div>
              <div class="book-download">
                   <a href="<?php the_permalink();?>">MORE INFO</a>
              </div>
          </div>
          <?php endwhile;?>

          <div class="pagination">
             <?php
                $big = 999999999; // need an unlikely integer

                echo paginate_links( array(
                    'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
                    'format' => '?paged=%#%',
                    'current' => max( 1, get_query_var('page') ),
                    'prev_text'    => __('« Previous'),
                    'next_text'    => __('Next »'),
                    'total' => $books->max_num_pages
                ) );
                ?>
         </div>

      </div>


<script>
jQuery('#infinite-scroll').infinitescroll({
    loading: {
    finishedMsg: "<em>No more books.</em>",
    msgText: "<em>Loading more books</em>"
    },
    navSelector     : "a.next",
    nextSelector    : "a.next",
    itemSelector    : "#infite-activities",
    debug           : true,
    dataType        : 'html',
    maxPage         : 5,
    path: function(index) {
        return "page/" + index + "/?test=1";
    }
}, function(newElements, data, url){

});
</script>

2 个答案:

答案 0 :(得分:0)

您需要在wp_query中偏移您的参数。这告诉查询从比平时更晚的位置开始。偏移量应该是$ paged * $ per_page

的变量
$args=array(
        "post_type"=>"books",
        "posts_per_page"=>"12",
        "offset" => "24" // or whatever (page * per_page) is equal to
);

答案 1 :(得分:0)

我相信它是你的分页(不是你正在打印的那个)和你正在调用的无限滚动JavaScript的梳子。它适用于主页,因为您正在执行的ajax请求是这样请求:

http://www.example.com/resources/books/page/3/?test=1

然而,一旦你到达内页,请求就会变成这样的东西:

http://www.example.com/books/many-molts-muchos/page/2/?test=1

所以你可以看到你不是要求资源/书籍/区域,而是要书籍/很多 - 很多 - 这可能会使你的分页混乱。尝试更新路径返回函数..

FROM:

return "page/" + index + "/?test=1";

TO:

return "<?php echo get_site_url(); ?>/resources/books/page/" + index + "/?test=1";

你也可以放弃&#34;?测试&#34;所以看起来更像是:

return "<?php echo get_site_url(); ?>resources/books/page/" + index;