这是你能做的。在页面顶部,运行第一个WP\\U查询。使用查询中的帖子数量计算二次查询所需的帖子数量cat_a
除以3并使用PHP floor() 删除任何余数。这将确保您的第二个查询只包含获得所需模式所需的确切帖子数。
显示时,我们可以使用PHP Modulus 显示我们的cat_b
之前发布cat_a
4(增量)始终显示。在这种情况下,我进入循环cat_b
但是break 这样WordPress就可以跟踪我们在循环中的位置,而无需跟踪。
总的来说,这个想法是这样的。我没有测试过,所以如果你遇到问题turn on debugging 并查看是否可以修复任何PHP错误。
$cat_b = \'\';
$cat_a = new WP_Query( array(
\'category\' => \'a\',
\'posts_per_page\' => 60,
) );
if( $cat_a->have_posts() ) {
$num_posts = floor( $cat_a->post_count / 3 );
if( $num_posts > 0 ) {
$cat_b = new WP_Query( array(
\'category\' => \'b\',
\'posts_per_page\'=> $num_posts,
) );
}
}
if( $cat_a->have_posts() ) : $index = 1; ?>
<?php while( $cat_a->have_posts() ) : $cat_a->the_post(); ?>
<?php if( ! empty( $cat_b ) && 0 == $index % 4 && $cat_b->have_posts() ) : ?>
<?php while( $cat_b->have_posts() ) : $cat_b->the_post();
<h1><?php the_title(); ?></h1>
<?php
wp_reset_postdata();
break;
endwhile;
?>
<?php endif; ?>
<h1><?php the_title(); ?></h1>
<?php
$index++;
endwhile;
?>
<?php
wp_reset_postdata();
endif;
?>