Loops 循环4个帖子类型,每个类型只返回1个帖子

Loops 循环4个帖子类型,每个类型只返回1个帖子,loops,custom-post-type,wordpress,Loops,Custom Post Type,Wordpress,我试图了解最有效的方法来返回4个最近的帖子。每种职位类型1名。有4种帖子类型 我可以做一些事情,比如4个不同的查询。或者对返回的每个帖子类型中的每个帖子进行计数,然后只允许显示第一个帖子。但我想到的一切似乎都太复杂了 这是我到目前为止所做的,返回了4篇文章,不管是哪种类型的文章 <?php $newsArgs = array( 'posts_per_page' => 4, 'orderby'

我试图了解最有效的方法来返回4个最近的帖子。每种职位类型1名。有4种帖子类型

我可以做一些事情,比如4个不同的查询。或者对返回的每个帖子类型中的每个帖子进行计数,然后只允许显示第一个帖子。但我想到的一切似乎都太复杂了

这是我到目前为止所做的,返回了4篇文章,不管是哪种类型的文章

    <?php 
        $newsArgs  = array(
            'posts_per_page'  => 4,
            'orderby'         => 'post_date',
            'order'           => 'DESC',
            'post_type'       => array('post', 'news', 'press', 'casestudy'),
            'post_status'     => 'publish',
            'suppress_filters' => true,
        );

        $query = new WP_Query( $newsArgs );
        if ( $query -> have_posts()) {
            while ( $query -> have_posts() ) : $query->the_post(); ?>

                    <?php the_title(); ?>

           <?php endwhile;
        }

        wp_reset_postdata(); 

    ?>
</ul>



如果不创建一个自定义查询来处理这个问题(这本身看起来会很难看),Wordpress在支持这个问题方面没有太多的功能,如果每个请求至少有4到5个单独的查询

为了确保在不太关心性能的情况下,至少获得每种帖子类型中的一种,您可以执行以下操作:

$results = array();
foreach(array('post', 'news', 'press', 'casestudy') as $type){
    $post = get_posts(array(
        'posts_per_page'  => 1,
        'post_type'       => $type,
        'post_status'     => 'publish'
    ));
    $results[] = $post[0]->ID;
}
$query = new WP_Query(array(
    'orderby'          => 'post_date',
    'order'            => 'DESC',
    'suppress_filters' => true,
    'post__in'         => $results
));
if ( $query -> have_posts()) {
    while ( $query -> have_posts() ) : $query->the_post(); ?>
        <?php the_title(); ?>
    <?php endwhile;
}
wp_reset_postdata();
$results=array();
foreach(数组('post','news','press','casestudy')作为$type){
$post=获取_posts(数组)(
“每页帖子数”=>1,
“post_type”=>$type,
“发布状态”=>“发布”
));
$results[]=$post[0]->ID;
}
$query=新的WP\U查询(数组(
'orderby'=>'post_date',
“订单”=>“描述”,
“抑制_过滤器”=>true,
'post_uuin'=>$results
));
如果($query->have_posts()){
而($query->have_posts()):$query->the_post();?>

从4个帖子类型中选择4个更近的含义?是3个类别中的每一个都有4个吗?是不是每一个类别中都有一个唯一的4个?是不是在时间上有4个绝对最后的帖子,但一个类别中有三个,另一个类别中有一个省略了另外两个?@ObmerkKronen我很抱歉,这句话用得很糟糕。为了更清楚,我重写了它。道格“参考!有趣的代码,所以我基本上要做4个查询….?或者通过提出一个自定义查询。自定义WPDB查询成本较低,但可读性可能较低,并且更难管理。另一种可能是将新闻煮沸,如果其各自的结构变化不大,则按返回到帖子类别,但这就是en依赖于主题和内部流程。此代码最终会对每个请求运行5个查询,每个帖子类型请求运行1个查询,最后一个查询按日期对结果进行排序。这并不理想,但有可能。