Как в WordPress отобразить кастомное поле «повторитель» ACF
Чтобы правильно отобразить кастомные поля «повторитель» (Repeater Field) в Advanced Custom Fields (ACF), нужно использовать специальные функции ACF для работы с этими полями.
🔹 Основной синтаксис для вывода повторителя
PHP
<?php if (have_rows('название_повторителя')) : ?>
<?php while (have_rows('название_повторителя')) : the_row(); ?>
<?php
// Получаем значения подполей
$subfield_value = get_sub_field('название_подполя');
?>
<div>
<?php echo $subfield_value; ?>
</div>
<?php endwhile; ?>
<?php endif; ?>
🔹 Пример с реальными данными
Допустим, у вас есть Repeater Field с названием team_members, и внутри него подполя:
name(текст)position(текст)photo(изображение)
Код для вывода всех записей повторителя:
PHP
<?php if (have_rows('team_members')) : ?>
<div class="team-list">
<?php while (have_rows('team_members')) : the_row(); ?>
<?php
$name = get_sub_field('name');
$position = get_sub_field('position');
$photo = get_sub_field('photo');
?>
<div class="team-member">
<img src="<?php echo esc_url($photo['url']); ?>" alt="<?php echo esc_attr($name); ?>">
<h3><?php echo esc_html($name); ?></h3>
<p><?php echo esc_html($position); ?></p>
</div>
<?php endwhile; ?>
</div>
<?php else : ?>
<p>Нет данных для отображения.</p>
<?php endif; ?>
🔹 Дополнительные варианты
1. Получить данные повторителя в виде массива
Если нужно работать с данными как с массивом:
PHP
$repeater = get_field('team_members');
if ($repeater) {
foreach ($repeater as $row) {
echo $row['name'];
echo $row['position'];
echo $row['photo']['url'];
}
}
2. Проверка на пустое поле
PHP
if (have_rows('team_members')) {
// Есть данные
} else {
// Пусто
}
3. Получить количество элементов в повторителе
PHP
$count = count(get_field('team_members'));
echo "Всего элементов: " . $count;
🔹 Важные моменты
✔ Экранирование данных – используйте esc_html(), esc_url() для безопасности.
✔ Проверка на пустоту – всегда проверяйте if (have_rows()).
✔ Изображения – если подполе photo это изображение, оно возвращается как массив (url, alt, title).
🔹 Вывод
Для работы с ACF Repeater Field используйте:
have_rows()+the_row()+get_sub_field()– для пошагового вывода.get_field('repeater')– если нужен массив всех данных.
Если что-то не работает, проверьте:
- Правильно ли указано название повторителя.
- Заполнены ли данные в админке.
- Подключен ли ACF в теме (если код в файле, а не через админку).
Можно также использовать var_dump(get_field('team_members')); для отладки. 🚀