我有一个archive-regularproducts.php
设置如下所示:
PHP:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
//content goes here
<?php endwhile; endif; ?>
<?php wp_reset_query(); ?>
<?php query_posts( \'post_type=wpsc-product\'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
//content goes here
<?php endwhile; endif; ?>
<?php wp_reset_query(); ?>
<nav id="page_nav">
<?php posts_nav_link( \' \', \' \', \' \'); ?>
</nav>
如您所见,我也在查询
wpsc-product
在这个归档页面上,帖子也会显示得很好,但由于我使用的是无限滚动,当它到达底部并拉入下一页帖子时,它会重复拉入
wpsc-product
因此我想知道是否有一种方法
posts_nav_link
功能仅用于
regularproducts
post类型,或者一种通常更好的实现我想要实现的目标的方法。如有任何建议,将不胜感激!
最合适的回答,由SO网友:Pieter Goosen 整理而成
query_posts
应该不惜一切代价避免。这不仅是我的重点,也是抄本的重点
Note: 此功能不适用于插件或主题。如后文所述,有更好、性能更好的选项来更改主查询。query\\u posts()是一种过于简单且有问题的方法,通过将页面的主查询替换为新的查询实例来修改它。它效率低下(重新运行SQL查询),并且在某些情况下会彻底失败(尤其是在处理POST分页时)。
你还应该看看this post 请进一步解释
您应该使用WP_Query
在这种情况下。
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
//content goes here
<?php endwhile; endif; ?>
<?php wp_reset_postdata(); ?>
<?php $my_query = new WP_Query( \'post_type=wpsc-product\'); ?>
<?php if ( $my_query->have_posts() ) : while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
//content goes here
<?php endwhile; endif; ?>
<?php wp_reset_postdata(); ?>
<nav id="page_nav">
<?php posts_nav_link( \' \', \' \', \' \'); ?>
</nav>
SO网友:engelen
默认情况下,自动分页仅应用于主查询。因此,分页已经正常工作了。问题可能在于您使用InfiniteScroll的方式。
IS允许您通过指定的选择器以容器和项目为目标。我建议将主查询包装在一个div中,并使用无限滚动将其作为目标。您是使用插件还是手动实现?
<div id="main">
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
//content goes here
<?php endwhile; endif; ?>
</div>
<?php wp_reset_query(); ?>
<?php query_posts( \'post_type=wpsc-product\'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
//content goes here
<?php endwhile; endif; ?>
<?php wp_reset_query(); ?>
<nav id="page_nav">
<?php posts_nav_link( \' \', \' \', \' \'); ?>
</nav>
然后,您应该以容器为目标
#main
以及里面的所有帖子。