php - 如何使用多个样式 div 循环 php
问题描述
我正在研究一个 WP 主题并偶然发现了一项我无法在此处描述的特定任务,但我确信如果我在这里显示一些屏幕截图,那么您就可以理解这个问题。
首先请看下图的帖子div
结构
这是 HTML 的实际设计,特别是 a 中的前 2 个帖子div
和另一个中的第三个帖子,div
如下面的屏幕截图
如果您不能理解这一点,请发表评论。
问题是如何通过保持相同的结构和设计来动态循环?
下面是我的代码
<div class="row justify-content-center">
<div class="col-xl-3 col-lg-6 col-md-6">
<?php
while($projects_array->have_posts()):
$projects_array->the_post();
$idd = get_the_ID();
$terms = wp_get_post_terms(get_the_ID(), 'project_cat');
$output = array();
if ($terms) {
$i = 1;
foreach ($terms as $term) {
if($i == 1):
$output[] = '<span class="tag-'.$i.'">'.$term->name.'</span>';
$id[] = $term->term_id ;
endif;
$i++;
}
}
if ( class_exists('ACF') && get_field('choose_link_type') == 1 ) {
$post_link = get_the_permalink();
} else {
$post_link = get_field('external_link');
}
?>
<div class="single-portfolio-box">
<?php if(has_post_thumbnail()): ?>
<img src="<?php the_post_thumbnail_url(); ?>" alt="<?php the_post_thumbnail_caption(); ?>">
<?php endif; ?>
<div class="content">
<h3><a href="<?php echo esc_url( $post_link ); ?>"><?php the_title(); ?></a></h3>
<?php echo join( ' ', $output ); ?>
</div>
</div>
<?php endwhile; ?>
<?php wp_reset_query(); ?>
</div>
</div>
提前致谢。
解决方案
您可以在三种不同的情况下创建索引并执行输出,如下所示:
$index = 1;
while ($projects_array->have_posts()) {
$modulo3 = $index % 3;
//Initialize your values
if (($modulo3 === 1) || ($modulo3 === 0)) {
//Display the wrapper div's start
}
//Display the actual post content
if (($modulo3 % 3 === 2) || ($modulo3 === 0)) {
//Display the wrapper div's end
}
$index++;
}
if ($index % 3 === 2) {
//Display the wrapper div's end
}
我没有深入研究你的结构,因为你比我更清楚。但是,这个想法是,如果您有一个表示当前状态的数值,那么您就知道需要显示包装器的哪一部分。每个循环 3 次迭代包括:
- 第 1 步:显示包装器的开始和帖子
- 第 2 步:显示帖子和包装器的结尾
- 第 3 步:显示包装器的开始、帖子和包装器的结束
到目前为止,一切都很好。如果迭代次数是 3 的倍数,那么您将在每个步骤中将两个帖子包装到一个包装器中,将第三个帖子包装到一个包装器中。但是,如果帖子的数量不是三的倍数,那么您将需要处理最后一组三人中的特殊情况。如果要显示的帖子数是 3n + 2,其中 n 是自然数,那么您的最后一组将由两个帖子组成,它们将由循环内的包装器很好地包装。但是,如果要显示的帖子数是 3n + 1,其中 n 是自然数,那么在最后一步您打开包装器并显示帖子。在这种情况下,您需要在循环之后关闭包装器。
推荐阅读
- android - Fragment 中的 setRetainInstance(true) 如何知道它必须被保留?
- sql - 如何获取重复的行
- c - 如何暂停直到有信号并且没有 C 打印?
- r - ggplot2 带有空格和 tidyeval 语法的变量名
- python - Python列表理解:如果另一个列表(具有相同长度)中的条件为真,则将元素添加到列表中
- javascript - 未捕获的参考错误:在 main.js 中未定义 firebase
- fits - 从 DS9 和 astropy.wcs 获取不同的 WCS 坐标
- python - 在 django 中按日期时间过滤模型
- logging - journalctl中的双行
- javascript - 使用 Jquery 发布动态表表单值并在 django 视图中获取该帖子