按类别分类的最新帖子-如何排除当前帖子?

时间:2012-07-05 作者:its_me

这是我用来显示当前帖子所属类别(当前帖子正下方)下的4篇最新帖子的代码:

<?php if (is_single()) : ?>
    <?php
        $count = 0;
        $aahan_category = get_the_category();
        $aahan_category = get_term_by( \'name\', $aahan_category[0]->cat_name, \'category\');
        $some_featured_posts = new WP_Query(array(\'category_name\' => $aahan_category->slug, \'posts_per_page\' => 4));
        while ($some_featured_posts->have_posts()):
            $some_featured_posts->the_post();
            $count++;
            $no_margin = (2 == $count || 4 == $count) ? \' no-margin-right\' : \'\';
    ?>

    <div class="latest-category-posts-image-t<?php echo $no_margin; ?>">
    <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
        <?php the_post_thumbnail( \'thumbnail\' ); ?>
        <h1 class="latest-category-posts-text"><?php the_title(); ?></h1>
    </a>
    </div>

    <?php
        endwhile;
        wp_reset_postdata();
    ?>
<?php endif; ?>
如果有必要,我在中添加了此代码content-single.php. 代码基本上显示了当前帖子所属类别下最近4篇帖子的特色图片(帖子缩略图)及其标题。

现在的问题是,当前职位是否属于n 最近发布的帖子(n = 4 根据我的代码),如何将其从列表中排除?

PS: 虽然不用说,但如果您能展示我使用的代码是如何优化的,那就太好了。

1 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

您可以使用post__not_in parameter of WP_Query 从查询中排除帖子ID数组。

get_the_category() 返回一个术语对象数组,因此get_term_by 是多余的。而且is_single() 永远都是真的content-single.php严格来说,这不是真的,但只有当您与模板选择发生冲突时才是真的)。

(最后,在你的例子中,如果你最多有4篇帖子,那么(2==$count || 4==$count) 相当于($count%2 == 0))

<?php
    $count = 0;
    $cat = get_the_category();
    if( $cat ){

        $featured_posts = new WP_Query(array( 
              \'post__not_in\'=>array(get_the_ID()),
              \'category_name\' => $cat->slug, 
              \'posts_per_page\' => 4
         ));

         while ( $featured_posts->have_posts() ): $featured_posts->the_post();
                 $count++;
                 $no_margin = ($count%2 == 0) ? \' no-margin-right\' : \'\';
             ?>
                 <div class="latest-category-posts-image-t<?php echo $no_margin; ?>">
                 <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
                        <?php the_post_thumbnail( \'thumbnail\' ); ?>
                        <h1 class="latest-category-posts-text"><?php the_title(); ?></h1>
                 </a>
                </div>
            <?php
         endwhile;
         wp_reset_postdata();
    }
?>

结束

相关推荐

Get_Categories仅获取主语言的类别

我试图在“content composer”中检索基于活动语言的项目类别。但我只从主要语言中获取类别,而没有从其他语言中获取类别。我的代码是:类别全部 $categories = get_categories(\'taxonomy=jw_portfolio_categories\'); if(!empty($categories)){ foreach($categories