В данной заметке хочу поделиться с вами решениями, относящиеся исключительно к полю Repeater (повторитель) плагина ACF (Advanced Custom Field).
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 позволяет делать удивительные вещи и воплощать любые реализации, главное уметь им пользоваться.
Со временем данная статья будет обновляться и будут добавлены другие вариации. Если у вас есть свои наработки по данному полю, прошу писать о них в комментариях.