0

我仍在努力学习 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/

非常感谢任何帮助!

4

1 回答 1

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,然后在后循环的每次迭代中递增它。

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

于 2013-09-26T15:22:51.860 回答