环路外的第一个帖子,仅首页?

时间:2012-09-18 作者:Luc Pestille

由于我的模板的结构方式,我需要从标准循环之外的站点中提取第一个/粘性帖子,就在主页上。我使用\\u s(下划线.me)作为基础,因此索引上的当前循环如下所示:

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

  <?php /* Start the Loop */ ?>
  <?php while ( have_posts() ) : the_post(); ?>

    <?php
      /* Include the Post-Format-specific template for the content.
       * If you want to overload this in a child theme then include a file
       * called content-___.php (where ___ is the Post Format name) and that will be used instead.
       */
      get_template_part( \'content\', get_post_format() );
    ?>

  <?php endwhile; ?>

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

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

<?php endif; ?>
我应该怎么做才能查询首页上的第一篇帖子(如果可能的话,我想使用相同的get\\u template\\u part构造),并且不会干扰页面分页的计数?

谢谢

UPDATE

问题的下一部分;现在,我想在分开的第一篇帖子和下面的继续部分之间添加一个自定义查询,该查询只从特定类别中提取一些帖子。我的查询似乎没有任何作用-有什么问题吗?这两个主回路是否有某种干扰?

    <?php
$args = array(
    \'cat\' => 6521,//(int) - use category id.
    \'category_name\' => \'featured\', \'dossier\', \'destacado\',
);    
$featured_posts = new WP_Query( $args );

// The Loop
if ( $featured_posts->have_posts() ) :

while ( $featured_posts->have_posts() ) : $featured_posts->the_post();
  echo \'<div style="background-color:#f00;">\';
  the_title();
  echo \'</div>\';
endwhile;

endif;

// Reset Post Data
wp_reset_postdata();
?>
谢谢你,

2 个回复
SO网友:Simon

如果我理解正确,您希望使用单独的查询获取第一篇文章,也许是为了将其与标记中的其他文章区分开来。要做到这一点,我会尝试以下方法:

<?php global $paged;
<?php if (is_home() && !$paged) : ?>

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

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

  <div id="featured">

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

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

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

      <?php endwhile; ?>

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

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

    <?php endif; ?>

  </div>

  <?php
    wp_reset_query();
    query_posts(array(\'posts_per_page\' => $posts_per_page - $num_featured_posts, \'offset\' => $num_featured_posts));
  ?>

<?php endif; ?>

<div id="posts">

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

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

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

    <?php endwhile; ?>

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

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

  <?php endif; ?>

</div>

Regarding your update

我想你的查询有错误。首先,您正在同时使用这两个catcategory_name 它们使用不同的参数(id和slug)做同样的事情。不过,这可能不是什么大问题,因为其中一个可能会优先考虑。

我认为问题是你把多个弹头作为category_name 参数,而它只需要一个。相反,使用category__in 并按如下方式在数组中传递类别ID:

$args = array(
   \'category__in\' => array(1, 2, 3)
);
此外,当您在WP\\u查询方面遇到问题时,最好添加wp_reset_query() 在查询之前和之后调用,以确保它不会干扰周围的查询,请添加一些最常见的查询变量,如post_type, posts_per_page, paged 等,以确保它们不会在其他地方被覆盖。最后,有时只需使用print_r($featured_posts); 将为您提供有价值的调试信息。

SO网友:Michael

请尝试在您的代码之前添加以下内容:

<?php if ( have_posts() && is_home() && !is_paged() ) : ?>
    <?php the_post(); ?>
    <?php get_template_part( \'content\', get_post_format() ); ?>
<?php endif; ?>

结束

相关推荐

Redirect Loops Problems

我不知道到底发生了什么事。昨天,它工作得很好。我回忆起今天早上我所做的让我陷入这种困境的事情。昨天,我刚刚在PhpMyAdmin编辑帖子。好吧,不管怎样,我禁用了所有插件,并找出什么不起作用。这是插件自定义永久链接。My problem is that I have about hundred videos in youtube, and each video is given with Custom Permalink set. I want to keep the Custom Permalink P