我正在尝试使用高级自定义字段为Wordpress主题做一点引导布局。我已经设置了它,所以如果你有2个内容字段,它会生成一个"6"宽列。如果你有3个字段,它会生成一个"4"字段列。
<?php if(get_field('link_tiles')) :
while (has_sub_field('link_tiles')) :
$number_of_cols = count(get_field( 'link_tiles' ));
if ($number_of_cols == 2) {
echo '<div class="col-md-6" style="padding: 0; margin: 0;">';
}
elseif ($number_of_cols >= 3) {
echo '<div class="col-md-4" style="padding: 0; margin: 0;">';
}
?>
我现在真正想要的是,如果你有4个字段输入,它会生成3x"4"宽列,然后1x"6"宽列,然后如果你有6个字段输入,它会返回生成"4"宽列。我想这需要一些逻辑使用While循环,但我不能完全弄清楚它的逻辑。我对PHP很陌生,任何帮助都会很感激!
在没有看到周围代码的情况下很难说,但是您必须已经遍历了这些列(为每个列回显一个<div>
)。你是在迭代数组吗?是否已经有一个变量设置为当前索引?
如果是,逻辑可能是这样的,给定$index等于当前列号:
// set default for two columns
$col_class = 'col-md-6';
if ($number_of_cols == 3) {
$col_class = 'col-md-4';
} elseif ($number_of_cols == 4 && $index < 4) {
$col_class = 'col-md-4';
} elseif ($number_of_cols == 4 && $index == 4) {
$col_class = 'col-md-6';
}
echo '<div class="' . $col_class . '">';
虽然看起来如果你有4列,你真的想要4列的.col-md-3
,而不是3的.col-md-4
和一个.col-md-6
,就像你上面指定的(这将是总共18列;
更新:
这是一个伪代码,但希望能给你关于如何继续的想法。注意,显然您仍然需要为每个列输出内容。
<?php if(get_field('link_tiles')) :
$number_of_cols = count(get_field( 'link_tiles' ));
$counter = 1;
while (has_sub_field('link_tiles')) :
// set default for two columns
$col_class = 'col-md-6';
if ($number_of_cols == 3) {
$col_class = 'col-md-4';
} elseif ($number_of_cols == 4 && $counter < 4) {
$col_class = 'col-md-4';
} elseif ($number_of_cols == 4 && $counter == 4) {
$col_class = 'col-md-6';
}
echo '<div class="' . $col_class . '"></div>';
// increment the counter for the next column
$counter++;
endwhile;
endif; ?>