Как вывести поля acf Repeater внутри другого acf Repeater?

Ссылка скопирована
1 ответ

Есть два разных повторителя и нужно одно поля из одного повторителя вывести в другой - такое возможно сделать?
Или есть вариант записать поле из повторителя - и выводить его в другом повторители.

Дополнительно:

Ответы:

Здравствуйте, репитер внутри репитера — вполне стандартная история. Если у вас два несвязанных репитера, то тоже можно, но тут надо понять какую задачу решаете.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Кирилл JS Ответ

Repeater внутри Repeater в ACF — нормальная и поддерживаемая схема. Если у вас один повторитель должен содержать группы, а внутри каждой группы ещё элементы, создайте вложенный repeater прямо внутри первого. Тогда вывод строится вложенными циклами have_rows().

Пример структуры:

  • sections — Repeater;
  • внутри него section_title — Text;
  • внутри него items — Repeater;
  • внутри items: item_title, item_text.

Вывод:

if (have_rows('sections')) {
    while (have_rows('sections')) {
        the_row();
 
        echo '<section>';
        echo '<h2>' . esc_html(get_sub_field('section_title')) . '</h2>';
 
        if (have_rows('items')) {
            echo '<div class="items">';
            while (have_rows('items')) {
                the_row();
                echo '<article>';
                echo '<h3>' . esc_html(get_sub_field('item_title')) . '</h3>';
                echo wp_kses_post(get_sub_field('item_text'));
                echo '</article>';
            }
            echo '</div>';
        }
 
        echo '</section>';
    }
}

if (have_rows('sections')) { while (have_rows('sections')) { the_row(); echo '<section>'; echo '<h2>' . esc_html(get_sub_field('section_title')) . '</h2>'; if (have_rows('items')) { echo '<div class="items">'; while (have_rows('items')) { the_row(); echo '<article>'; echo '<h3>' . esc_html(get_sub_field('item_title')) . '</h3>'; echo wp_kses_post(get_sub_field('item_text')); echo '</article>'; } echo '</div>'; } echo '</section>'; } }

Если же у вас два независимых повторителя, и нужно «поле из одного выводить в другом», сначала подумайте о структуре данных. Часто это признак, что данные нужно связать через Post Object, Relationship, Taxonomy или Select, а не копировать между повторителями.

Копирование значения из одного repeater в другой обычно плохая идея: данные начнут расходиться. Лучше хранить общие элементы в одном месте, а во втором блоке выбирать их по ID/ключу. Если это просто визуальная группировка, вложенный repeater будет самым понятным решением.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно