问题: 如何简单地计算ACF重复器字段输出中的行数?
目标: 当输出只有一行时,通过css类使输出外观不同于多于一行的情况。
我的代码:
if( have_rows('testimonials')) {
$counter = 0;
$numtestimonials = '';
//loop thru the rows
while ( have_rows('testimonials') ){
the_row();
$counter++;
if ($counter < 2) {
$numtestimonials = 'onlyone';
}
echo '<div class="testimonial ' . $numtestimonials . '">';
// bunch of output here
echo '</div>';
}
}
显然,我在这里的做法行不通,因为第一次通过此行时计数<2,因此即使在计数更多行后也会返回true。
谢谢!
count(get_field('field_name'))
。 - Spacehave_rows
/the_row
循环可以很好地打印出 Repeater 的内容,但是对于调用 Repeater 名称的get_sub_field
或get_field
都没有返回任何内容。如果我将get_sub_field
或get_field
的输出记录到error_log
中,我可以看到两者都没有返回任何东西,这就是为什么我无法获取计数的原因。我的临时解决方案只是在主要循环之前重复使用have_rows
/the_row
循环来计算 Repeater 中的所有行数 :/ 我讨厌这个解决方案。 - mike$counter = 0;
放在while
循环内部,然后将 $counter++ 放入数组$counters[] = $counter++
中,然后计算数组count($counters)
并在想要的位置显示数字,之后,在关闭endwhile
循环之后,一定要 重置 数组unset($counters);
。 - maiakd