限制相关帖子的数量

时间:2015-05-21 作者:heytricia

我正试图在我的单个帖子视图的底部添加一个相关帖子部分。它需要抓取当前帖子的类别,并只显示两个与这些类别匹配的帖子。我几乎做到了,但我的结果显示每个类别中有2个,而不是总共2个。

<?php if ( is_single() ) { ?>
    <div class="related-posts wrapper clearfix">
        <?php $categories = get_the_category();
            foreach ($categories as $category) {
                $cat = $category->cat_ID;
                $args=array(
                    \'cat\' => $cat,
                    \'order\' =>DESC,
                    \'post__not_in\' => array($post->ID),
                    \'posts_per_page\'=>2,
                );
            $my_query = null;
            $my_query = new WP_Query($args);
            if( $my_query->have_posts() ) {
                $i = 0; while ($my_query->have_posts() && $i < 3) : $my_query->the_post(); ?>
                    <h2 class="related-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                <?php  $i++; endwhile; }
            }
            wp_reset_query();
        ?>
    </div>
<?php } else {};?>  

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

构建类别数组:

foreach ($categories as $category) {
    $cat[] = $category->cat_ID;
}
然后将其传递给查询:

$args=array(
  \'category__in\' => $cat, 
  \'order\' =>DESC, 
  \'post__not_in\' => array($post->ID),
  \'posts_per_page\'=>2, 
);
换句话说,将查询放在foreach, 不在里面。

SO网友:shanebp

$i 正在为每个类别重置。

尝试在foreach cat循环之前声明$i:

<?php 
$i = 0; 
$categories = get_the_category();
// etc
如果$i = 0, 然后,在它停止之前,您将获得3篇帖子,请尝试以下操作:

if( $my_query->have_posts() ) {
      while ($my_query->have_posts() && $i < 2)
      // etc

结束

相关推荐

Parent and child categories

下面是a的一部分WP_Query 环我有两个父类别ABC和12,每个都有几个子类别。在第一个td 我想让ABC儿童频道的slug类和12个儿童频道的slug类。该职位可能属于两个子类别之一,或同时属于两个子类别。一个来自ABC,一个来自12,或者一个来自ABC,一个来自12。$inCat = get_the_category(get_the_ID()); echo \"<td>\".(!empty($inCat[0]->slug) ? $inCat[0]->slu