在一个查询中组合两种不同的自定义帖子类型,并且仍然能够控制要显示的每种类型帖子的数量,这可能有点棘手。如果一个查询与post\\u type=数组(\'type1\',\'type2\',…)一起使用,您必须将posts\\u per\\u page设置为相当高的数字。我觉得这是肮脏和糟糕的:)
因此,您可以使用两种不同的wp\\U查询,并可以单独控制每种类型显示的帖子数量。但是,单个查询的结果必须“合并”并一起显示,而不是一个接一个地显示。因此,接下来需要使用对象缓冲,我听说这也是不好的!!:)
总之,下面是使用第二种方法的代码:
<?php
$output = array();
//first query to retrieve cpt core-value
$cv_query = new WP_Query(
array(
\'post_type\' => \'core-value\',
//\'posts_per_page\' => -1, this is a bad approach, you sure you want to display ALL core-values ?
)
);
if( $cv_query->have_posts() ):
while ( $cv_query->have_posts() ) : $cv_query->the_post();
ob_start();
?>
<div id=\'post-<?php the_ID();?>\' <?php post_class( \'slider\' );?> >
<?php the_title();?>
<?php the_post_thumbnail();?>
<?php
/* and all other details of the post you want */
?>
</div>
<?php
$output[] = ob_get_contents();
ob_end_clean();
endwhile;
endif;
wp_reset_postdata();
//another wp_query to retrieve cpt events
$event_query = new WP_Query(
array(
\'post_type\' => \'event\',
\'posts_per_page\' => 3
)
);
if( $event_query->have_posts() ):
while ( $event_query->have_posts() ) : $event_query->the_post();
ob_start();
?>
<div id=\'post-<?php the_ID();?>\' <?php post_class( \'slider\' );?> >
<?php the_title();?>
<?php the_post_thumbnail();?>
<?php
/* and all other details of the post you want */
?>
</div>
<?php
$output[] = ob_get_contents();
ob_end_clean();
endwhile;
endif;
wp_reset_postdata();
if( $output ){
//shuffle the array to randomize it
shuffle($output);
//now finally echo them
foreach ($output as $postdata) {
echo $postdata;
}
}
?>