Repeater полезное и уникальное произвольное поле, с его помощью можно создавать гибкие, удобные для заполнения и дальнейшего использования формы. На сайтах моих клиентов всегда присутствует повторитель, я даю пользователям с легкостью управлять слайдерами, галереями и прочими присутствующими на сайте блоками.
Некоторые возможно не знают, но можно вставлять репитер в репитер и таким образом выводить необходимый контент на сайте как угодно. Я предлагаю посмотреть некоторые вариации, которые вы сможете использовать в своих проектах.
Заметка #1 — Вывести данные поля Repeater стандартным способом.
<?php if(get_field('fieldname')): ?>
<?php while(has_sub_field('fieldname')) : ?>
<?php the_sub_field('fieldname_sub'); ?>
<?php endwhile; ?>
<?php endif; ?>
Заметка #2 — В репитере есть выбор с радиобаттоном и вы хотите скрыть поле, если значение радиобаттона не совпадает с выбранным значением в админке.
<?php if(have_rows('fieldname')): ?>
<?php while(have_rows('fieldname')): the_row();
$fieldname_sub = get_sub_field('fieldname_sub');
?>
<?php if (($link) == 'yes'): ?>
// Здесь выводим нужный нам контент
<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>
Заметка #3 — Репитер в репитере. Причём уровней вложенности самих репитером может быть хоть 10, главное соблюдать правильную структуру кода.
<?php if(get_field('fieldname')): ?>
<?php while(has_sub_field('fieldname')) : ?>
<?php the_sub_field('fieldname_sub'); // Значение поля первого репитера ?>
<?php if(get_sub_field('fieldname_subrepeater')): ?>
// Начало второго репитера
<?php while(has_sub_field('fieldname_subrepeater')) : ?>
<?php the_sub_field('fieldname_subrepeater_sub'); // Значение поля второго репитера ?>
<?php endwhile; ?>
// Конец второго репитера
<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>
Заметка #4 — Repeater с условием: убираем любые данные, если какое-то поле репитера не заполнено.
<?php if( have_rows('fieldname') ): ?>
<?php while( have_rows('fieldname') ): the_row();
// Перечисляем поля репитера
$fieldname_sub = get_sub_field('fieldname_sub');
?>
<?php if($image['url'] != ''){ ?>
<?php echo $image['url']; ?>
<?php } ?>
<?php if( $fieldname_sub ): ?> style="background-color:<?= $fieldname_sub; ?>;"<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>
Заметка #5 — Repeater с установленным размером картинки. Вы можете добавить в репитер поле «изображение», далее выводить это изображение в полном размере, либо с предустановленным своим размером.
<?php if( have_rows('fieldname') ): ?>
<?php while( have_rows('fieldname') ): the_row();
$attachment_id = get_sub_field('fieldname_sub');
$imageurl = wp_get_attachment_image_src( $attachment_id, 'full' ); // если нужна ссылка на полный размер
$fieldname_sub = wp_get_attachment_image_src( $attachment_id, "550x200" ); // если нужна ссылка на предустановленный размер миниатюры
$fieldname_sub = get_sub_field('fieldname_sub');
?>
<?php echo $fieldname_sub; ?>
<?php echo $imageurl[0]; ?>
<?php if( $fieldname_sub ): ?><?php echo $fieldname_sub[0]; ?><?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>
Поле Repeater (повторитель) в ACF позволяет делать удивительные вещи и воплощать любые реализации, главное уметь им пользоваться.
Со временем данная статья будет обновляться и будут добавлены другие вариации. Если у вас есть свои наработки по данному полю, прошу писать о них в комментариях.