【问题标题】:Post repeating with infinite scroll无限滚动重复发布
【发布时间】:2014-12-09 17:39:48
【问题描述】:

我正在创建一个无限滚动的书籍(wordpress 帖子)。 如果你看到第一排的书是这个:

但是如果你向下滚动,在它“加载更多书籍”之后,这本书会再次出现。

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

books home上效果很好,您可以在 [此处][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>

【问题讨论】:

  • 我们甚至不知道目前什么不起作用。请澄清这一点。
  • @Daniel 如果您向下滚动,这些帖子会不断重复
  • 您的 SO-Badges 看起来您已经具备一些 SE 经验。因此,请再次查看常见问题解答,并尝试清楚地阐明与实际结果形成对比的预期结果。
  • @Daniel 已编辑。好点吗?你能帮我解决实际问题吗?看来你很感兴趣:)
  • 网站看起来还不错。有什么问题?

标签: javascript php jquery ajax wordpress


【解决方案1】:

我相信它是您的分页(不是您正在打印的那个)和您正在调用的无限滚动 JavaScript 的组合。它可以在主页上运行,因为您正在执行的 ajax 请求是这样请求的:

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

但是,一旦您进入内部页面,请求就会变成这样:

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

所以您可以看到您不是向资源/书籍/区域发出请求,而是向书籍/many-molts-muchos/ 发出请求,这可能会混淆您的分页。尝试更新路径返回函数..

来自:

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

到:

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

您也可以省略“?test”,使其看起来更像:

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

【讨论】:

  • 完美运行!谢谢你! britter,您能否从答案中删除链接,如果您想将其保留在那里,请将其更改为 bitly。谢谢!
  • Oook 我将其更改为 example.com,这样您就可以看到完整的 url,因为它位于答案所在的 URL 中。 :)
  • 谢谢。我会尽快接受赏金,因为现在它说我必须等待 22 小时才能颁奖。谢谢你帮助我:)
【解决方案2】:

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

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

【讨论】:

  • 我是这么说的,但还是重复了,不同的是现在从其他书开始:/
  • 啊,那就忽略吧。似乎它是从选择器的链接中提取的,在本例中为 a.next。当我访问 a.next infonomia.com/books/30-ideas-for-2030/page/2" 的 URL 时,它会将我重定向到我所在的当前页面。也许获取分页的代码有问题。
猜你喜欢
  • 2014-04-08
  • 2018-05-21
  • 2016-10-12
  • 1970-01-01
  • 2023-04-06
  • 2016-11-25
  • 2019-08-19
  • 2012-06-01
  • 2013-06-19
相关资源
最近更新 更多