使用get_posts展示文章滑块,如何为各滑块添加对应背景类?
修复Swiper滑块背景色类重复问题
你的代码核心问题是背景色类的判断逻辑写在了循环外部,仅执行一次,而且此时$counter还未初始化(循环内才赋值$counter = 0),导致所有滑块复用同一个初始计算的类。
修复后的完整代码
<?php $last_posts = get_posts(array( 'numberposts' => 5, 'orderby' => 'date', 'post_type' => 'post', )); global $post; ?> <div class="swiper"> <div class="swiper-wrapper"> <?php $counter = 0; foreach ($last_posts as $post) : setup_postdata($post); // 将背景色判断移到循环内部,每次遍历重新计算 $bgcolor = ''; if ($counter == 0) { $bgcolor = 'yellow-slide'; } else if ($counter == 1) { $bgcolor = 'green-slide'; } else if ($counter == 2) { $bgcolor = 'blue-slide'; } else if ($counter == 3) { $bgcolor = 'yellow-slide'; } else { $bgcolor = 'green-slide'; } ?> <div class="swiper-slide <?php echo $bgcolor ?>"></div> <?php $counter++ ?> <?php endforeach; wp_reset_postdata(); ?> </div> </div>
可选优化方案(数组映射更简洁)
如果后续需要调整颜色顺序,用数组映射的方式维护性更强:
<?php $last_posts = get_posts(array( 'numberposts' => 5, 'orderby' => 'date', 'post_type' => 'post', )); global $post; // 直接定义索引对应的颜色类 $slideColors = [ 0 => 'yellow-slide', 1 => 'green-slide', 2 => 'blue-slide', 3 => 'yellow-slide', 4 => 'green-slide' ]; ?> <div class="swiper"> <div class="swiper-wrapper"> <?php $counter = 0; foreach ($last_posts as $post) : setup_postdata($post); $bgcolor = $slideColors[$counter]; ?> <div class="swiper-slide <?php echo $bgcolor ?>"></div> <?php $counter++ ?> <?php endforeach; wp_reset_postdata(); ?> </div> </div>
内容的提问来源于stack exchange,提问作者natal
相关产品推荐
相关产品推荐

