Если WordPress Repeater имеет 1 поле, 2 поля и т. Д.

У меня есть повторитель, который я хотел бы изменить в зависимости от того, сколько полей он выводит

код, который я имею для основного репитера:

<?php // REAPEATER FIELD
if(get_field('whatever')): ?>
<?php while(has_sub_field('whatever')): ?>

<div class="whatever_block">
<?php the_sub_field('anything'); ?>
</div>

<?php endwhile; ?>
<?php endif; ?>

Как я хочу, чтобы это выглядело:

<?php // REAPEATER FIELD
if(get_field('whatever')): ?>
<?php while(has_sub_field('whatever')): ?>

//if only one
<div class="col-sm-12">
<?php the_sub_field('anything'); ?>
</div>

//if only two
<div class="col-sm-6">
<?php the_sub_field('anything'); ?>
</div>

//if etc

//else
<div class="whatever_block">
<?php the_sub_field('anything'); ?>
</div>

<?php endwhile; ?>
<?php endif; ?>

Как я могу добиться вышеупомянутого вывода с помощью операторов if? Являются ли заявления даже правильный путь?

0

Решение

Хорошо, здесь используется функция count () для подсчета полей, а затем с помощью регистра переключателя устанавливается класс для вашего div, например:

<?php // REAPEATER FIELD
if(get_field('whatever')): ?>
<?php switch(count(get_field('whatever'))) :    //checks total fields set
case '1':
$divClass = 'oneField';
break;
case '2':
$divClass = 'twoField';
break;
case '3':
$divClass = 'threeField';
break;
case '4':
$divClass = 'fourField';
break;
endswitch; ?>
<?php while(has_sub_field('whatever')): ?>

<div class="<?php echo $divClass; ?>">
<?php the_sub_field('anything'); ?>
</div>

<?php endwhile; ?>
<?php endif; ?>

Просто замените «oneField», «twoField», ect на нужные вам имена классов, и все должно быть установлено.

2

Другие решения

Вы можете сделать count на повторителе, чтобы проверить, сколько подполей у него есть. Вот решение с использованием ACF v4.xx have_rows синтаксис (тем не менее должен работать с get_field также):

if( have_rows( 'parent_whatever' ) ) {
$posts_no = get_field( 'parent_whatever' );
while( have_rows( 'parent_whatever' ) {
the_row();
$class = "col-sm-" . 12/$posts_no;

echo '<div class="' . $class . '">';
the_sub_field( 'whatever' );
echo '</div>';
endwhile;
endif;
0

По вопросам рекламы [email protected]