如何每迭代3次包裹div并统计内部项目数量用于设置自定义类
实现方法
要实现外层div携带内部项目数量的自定义类,只需要在创建每组外层div时,预先计算当前分组的项目总数即可,无需额外嵌套计数逻辑:
- 基于总项目数
$post_count计算总分组数,每组固定3项 - 非最后一组的项目数固定为3
- 最后一组的项目数为总项目数减去前面所有组的项目总数
修改后完整代码
(默认循环索引$i初始值为0,若初始值为1可参考下方补充说明调整)
// 计算当前分组的项目数 $current_group_index = floor($i / 3); $total_groups = ceil($post_count / 3); $current_group_item_count = ($current_group_index < $total_groups - 1) ? 3 : ($post_count - $current_group_index * 3); if( ($i % 3) == 0 ) { $griditemcounter = 1; } // 拼接外层div类时加入项目数量类 ( ( $i % 3 ) == 0 ) ? $html .= '<div class="project_row projectitemcount-'.$current_group_item_count.' grid-'.( ( $griditemcounter % 2 ) == 0 ? 'second' : 'first' ).'">' : $html .= ''; $html .= '<div class="project_item grid'.$griditemcounter.'" style="background-image:url('.( $url ? $url : 'https://via.placeholder.com/940x1260').') ">'; $html .= '<a href="'.get_the_permalink().'">'; $html .= '<div class="project_item_img"><img src="'.( $url ? $url : 'https://via.placeholder.com/768x375').'" alt=""/></div>'; $html .= '<div class="et_pb_text_inner project_item_content">'; $html .= '<h3>'.get_the_title().'</h3>'; $terms = get_the_terms( get_the_ID(), $taxonomy ); foreach($terms as $term) { $html .= '<p>'. $term->name. '</p>'; } $html .= '</div>'; $html .= '</a>'; $html .= '</div>'; ( $i == ( $post_count - 1 ) || ( ++$i % 3 ) == 0 ) ? $html .= '</div>' : $html .= ''; $griditemcounter++;
补充说明
如果你的循环索引$i初始值为1,只需调整分组计算逻辑为:
$current_group_index = floor(($i - 1)/ 3);
内容的提问来源于stack exchange,提问作者ccmanz
相关产品推荐
相关产品推荐

