【发布时间】:2016-08-21 23:24:50
【问题描述】:
我需要一些关于如何创建公式的见解,该公式将根据显示的 div 的数量确定要添加到 div 元素的类。
目前我正在使用 ACF 创建一个转发器字段,该字段将有一个子字段链接到基于管理员选择的页面。这些字段将根据 while 循环显示在它们自己的 div 中。我正在使用 Bootstrap 类,例如 col-sm-12、col-sm-6 和 col-sm-4。
while( have_rows( 'project_repeater' ) ): the_row();
$post_object = get_sub_field( 'project_type' );
$count = count( get_field('project_repeater') ); // Output 4
$mod = $count % 3; // Output 1
if( $post_object ):
$post = $post_object;
setup_postdata( $post );
$classname = '';
if( $mod == 1 ) {
if( $count == 1 ) {
$classname .= 'col-sm-12';
} elseif( $count == 4 ) {
$classname .= 'col-sm-6';
} else { // $count == 7
$classname .= 'col-sm-4';
}
} elseif( $mod == 2 ) {
if( $count == 2 ) {
$classname .= 'col-sm-6';
} elseif( $count == 5 ) {
// $classname .= 'col-sm-12';
} else { // $count == 8
// $classname .= 'col-sm-4';
}
} else { // $mod == 0
$classname .= 'col-sm-4';
}
?>
<div class="project-cat <?php echo $classname; ?>">
<a href="<?php the_permalink( $post ); ?>">
<h5><?php the_title(); ?></h5>
<p><?php the_excerpt(); ?></p>
</a>
</div>
<?php
wp_reset_postdata();
endif;
endwhile;
现在当 $count == 5 时,我需要将前 3 个 div 设置为 col-sm-4,然后将最后 2 个 div 设置为 col-sm-6(这将按此顺序显示 div 堆叠在彼此之上: 3,2)。
$count == 7 时,需要与 $count == 5 时类似,但前 3 个为 col-sm-4,后 4 个为 col-sm-6 (3,2,2)
$count == 8 时,前 6 个为 col-sm-4,后 2 个为 col-sm-6 (3,3,2),情况会略有不同。
不是在 if 语句之后使用 if 语句,而是必须有一种更好的方法来创建一个公式,该公式将根据正在显示的 div 元素的数量来确定要使用的类。
【问题讨论】:
标签: php wordpress twitter-bootstrap advanced-custom-fields