是否将QUERY_POSTS限制为1,而不考虑粘性帖子?

时间:2012-10-07 作者:Luc Pestille

作为我主页模板的一部分,使用标准的query\\u帖子,我将拉出1篇帖子(使用不同的content\\u部分设置样式),然后是一则广告,然后是其余的帖子。这很好,除非有人将帖子设置为粘滞,将posts\\u per\\u页面设置为1的循环拉出2。

我怎样才能让他的循环只显示一个帖子,要么是最新的,要么是最粘的,但不能同时显示这两个帖子(我理解这是预期的行为)?目前我有:

    <?php 
$posts_per_page = get_option(\'posts_per_page\');
$num_featured_posts = 1;

query_posts(array(\'posts_per_page\' => $num_featured_posts)); ?>

  <?php if ( have_posts() ) : ?>

    <?php while ( have_posts() ) : the_post(); ?>

      <?php get_template_part( \'content\', \'super\' ); ?>

    <?php endwhile; ?>

  <?php elseif ( current_user_can( \'edit_posts\' ) ) : ?>

    <?php get_template_part( \'no-results\', \'index\' ); ?>

  <?php endif; ?>
谢谢你,

UPDATE:在明确地只调出1篇帖子之后,不管帖子的粘性状态如何,并且从帖子的主循环中排除了该帖子,我的主循环现在在后续页面上复制了一篇帖子(最后一篇成为第2页的第一篇)。偏移量给我带来了麻烦,通常很容易破坏分页-是否有其他方法来修复/添加此问题:

  wp_reset_query();
  $args = array(
    \'post__not_in\' => array($first_sticky_post),
    \'paged\' => ( get_query_var(\'paged\') ? get_query_var(\'paged\') : 1 ),        
  );
  //query_posts( $args );
  $main_loop = new WP_Query( $args );
。。。要重置循环在>1页上的起始位置,请执行以下操作:?

您可以在此处看到它的作用:n2.project14.co.uk

谢谢

1 个回复
SO网友:fuxia

$GLOBALS[\'wp_query\']->found_posts 会给你发帖子的数量。

$GLOBALS[\'wp_query\']->posts 是一个包含找到的所有帖子的数组。

因此while ( have_posts() ) : the_post(); 使用:

setup_postdata( $GLOBALS[\'wp_query\']->posts[0] );
get_template_part( \'content\', \'super\' );
这样你就不用浏览所有的帖子,你只需要使用一个。

请阅读When should you use WP_Query vs query_posts() vs get_posts()?

结束

相关推荐