Foreach&同时生成重复输出

时间:2013-09-26 15:17:49

标签: php wordpress foreach while-loop

我还在努力学习PHP,我花了很多时间在这段代码上,几乎到了我需要的地方。基本上,代码旨在从过去10天抓取WP帖子,随机选择两个,然后在帖子中显示第一个图像并链接到所述帖子。它也应该用类.second设置第一个图像,用类.third设置第二个图像。不幸的是,它在某种程度上起作用,但不断生成同一图像的重复副本。该阵列似乎正在工作,除了我只需要少一个每个图像的副本。这是代码,减去日期过滤器和catch_that_image()函数,两者都正常工作:

add_filter( 'posts_where', 'filter_where' );

$banner_class = array('second','third');
$the_query = new WP_Query( array('orderby' => 'rand', 'posts_per_page' => '2' ));

while ( $the_query->have_posts() ) : $the_query->the_post();
if (!empty($the_query)) {
foreach ($banner_class as $value){ ?>
<div class="banner small image <?php echo $value; ?>" >
<?php echo '<a href="'. get_permalink().'">'; ?>
<img src="<?php echo catch_that_image(); ?>" width="300px"> 
<?php echo '</a></div>';
}
}

endwhile;


remove_filter( 'posts_where', 'filter_where' );

我确信这是一个简单的解决方案,毫无疑问与while和foreach一起使用有关。这是输出:http://www.mymusicisbetterthanyours.com/slider-test/

任何帮助都非常感谢!

1 个答案:

答案 0 :(得分:1)

$n = 0;
while ( $the_query->have_posts() ) : $the_query->the_post();
?>
    <div class="banner small image <?php echo $banner_class[$n]; ?>">
        <a href="<?php the_permalink(); ?>"><img src="<?php echo catch_that_image(); ?>" width="300px"></a>
    </div> 
<?php $n ++; endwhile; ?>

摆脱实际循环中的foreach循环。你在每次迭代中用这种方式编写html两次。为横幅类添加基本计数器。在这种情况下,$ n,然后在post循环的每次迭代中增加它。

顺便说一下,我简化了你的输出。您无需检查查询是否为空。这就是条件正在做的事情。而打破和退出PHP来编写html的部分并没有意义。我也在您的查询中看不到任何内容,以确保随机帖子仅限于过去10天。