在一个查询中从多个CPT中获取最新的3个帖子

时间:2012-05-11 作者:circlecube

我希望在我的网站上创建一个站点范围的提要,并有多种自定义帖子类型。我想显示至少3种不同帖子类型的3篇帖子。我可以在每种帖子类型中获得最新的10篇帖子,我也可以获得最新的10篇帖子,但我想具体说明一下,这样我只能从每一篇帖子中获得3篇,所以事情是公平的。最好的方法是执行3个不同的查询,然后合并它们吗?我知道如何单独完成这项工作,但我希望它们都能集成并按时间戳排序。有什么建议吗?

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

此方法使用计数器和1个查询。每个帖子类型只能显示3篇帖子。

$args = array(
        \'post_type\' =>  array( \'type1\', \'type2\', \'type3\' ),
        \'posts_per_page\'    =>  -1
        );

    $myquery = new WP_Query( $args );
        $type1 = 0; $type2 = 0; $type3 = 0; $count = 0;
        while ( $myquery->have_posts() ) : $myquery->the_post();

            if ( $post->post_type == \'type1\' ) $type1++; 
            if ( $post->post_type == \'type1\' && $type1 > 3 ) continue;

            if ( $post->post_type == \'type2\' ) $type2++; 
            if ( $post->post_type == \'type2\' && $type2 > 3 ) continue;

            if ( $post->post_type == \'type3\' ) $type3++; 
            if ( $post->post_type == \'type3\' && $type3 > 3 ) continue;

            $count++; if ( $count > 9 ) continue;

            // Do Stuff

            endwhile;
如果您有大量的帖子,这可能不是最好的解决方案,因为它将遍历所有帖子,如果给定帖子类型的计数大于3,它将返回到循环的开头。

结束

相关推荐

在类中添加_action‘Manage_Posts_Customer_Column’

我认为这可能是一个更一般的php问题,但我在这里发布它,因为它与WP函数有关。我对add_action 在…上manage_posts_custom_column 在类内部。以下是代码(略为精简):class The_class{ function __construct() { $this->add_actions(); } function add_actions() { add_