POSTS_NAV_LINK拉取多种帖子类型

时间:2014-06-08 作者:user1374796

我有一个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类型,或者一种通常更好的实现我想要实现的目标的方法。如有任何建议,将不胜感激!

2 个回复
最合适的回答,由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 以及里面的所有帖子。

结束

相关推荐

显示评论者用户名或登录名的PHP函数

我想在注释模板中显示注释者的用户名或登录名。我知道有一个函数comment_author_link(), 但这会显示“公开显示名称为”的名称,而不一定是用户名。用户名必须是唯一的,所以我更愿意显示用户名。我尝试了其他一些功能,并一直在寻找这个。我得到的最接近的函数是以下函数:<?php if ($comment->user_id) { $user=get_userdata($comment->user_id); echo $user->use