我试图控制一个循环中的一个循环。我想做的是显示所有帖子,并每3篇帖子插入一个自定义帖子类型。所以它会像这样“后CPT后CPT后CPT后CPT…”我是这样做的
global $loop_counter;
$loop_counter = 0;
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
?>
// DO STUFF
<?php $loop_counter++; ?>
if ( $loop_counter%3 == 0 ) {
$args = array(
\'post_type\' => \'testimony\',
);
$testimony = new WP_Query($args);
if ( $testimony->have_posts() ) {
while ( $testimony ->have_posts() ) {
$testimony->the_post();
?>
//LOOP WITHIN LOOP
} }
} END loop count if
?>
我精简了一点代码,但这应该足够了。现在我想解决一个问题。只要主循环有POST,内部循环就会一直重复。我希望停止循环通过内部循环,只要我们没有帖子显示。任何帮助都将不胜感激。
SO网友:s_ha_dum
我想你更想要这样的东西:
$args = array(
\'post_type\' => \'testimony\',
);
$testimony = new WP_Query($args);
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
if ( 0 !== $wp_query->current_post
&& 0 === $wp_query->current_post%3
&& $testimony->have_posts()
) {
$testimony->the_post();
echo \'inner-loop\';
the_title();
echo \'inner-loop\';
echo \'<br>\';
}
wp_reset_postdata();
the_title();
echo $wp_query->current_post;
echo \'<br>\';
}
}
您不需要循环计数器。有一个内置计数器
WP_Query
, 你不需要运行它
$testimony
在外部循环的每次迭代中进行查询。
这个the_post
方法将循环增量为1,因此在每次迭代时,内部循环运行,echo
s内容并继续。
这里显然有一些调试代码。你可以编辑掉它,并根据需要替换它。