Проблема, при выводе через Repeater других постов, используя Post-object внутри поста не работает Repeater, как решить?
Доброе время суток, столкнулся с такой проблемой.
создал страницу где вывожу через Repeater другие посты используя Post-object для выбора други посты на странице, просто Заголовок текст выводится все хорошо но не как не могу вывести второй Repeater от выбранного поста, подскажите кто знает как это сделать
ниже мой код
<section id="rindex_{{row_index}}" class="{{layout_id}}"> <div class="container {{ displayPadding(padding) }}"> {% for item in auto_repeater %} // тут первый Repeater он работает <div class="item_auto"> <div class="__top"> <div class="__class_name">{{item.autoitems.klass}}</div> // этот текст выводится <div class="__price"> <strong>{{item.autoitems.preis_ab}}</strong> // этот текст выводится <span>{{item.autoitems.preis_text}}<sup>{{item.autoitems.legende}}</sup></span> // этот текст выводится </div> </div> <div class="cart_liste"> {% for cartname in item.autoitems.liste %} // вот тут идет второй Repeater который не работает <div class="__item_bild"> {{cartname.name}} </div> {% endfor %} </div> </div> {% endfor %} </div> </section> |
<section id="rindex_{{row_index}}" class="{{layout_id}}"> <div class="container {{ displayPadding(padding) }}"> {% for item in auto_repeater %} // тут первый Repeater он работает <div class="item_auto"> <div class="__top"> <div class="__class_name">{{item.autoitems.klass}}</div> // этот текст выводится <div class="__price"> <strong>{{item.autoitems.preis_ab}}</strong> // этот текст выводится <span>{{item.autoitems.preis_text}}<sup>{{item.autoitems.legende}}</sup></span> // этот текст выводится </div> </div> <div class="cart_liste"> {% for cartname in item.autoitems.liste %} // вот тут идет второй Repeater который не работает <div class="__item_bild"> {{cartname.name}} </div> {% endfor %} </div> </div> {% endfor %} </div> </section>
Дополнительно:
Я бы протестировал код без шаблонизатора и потом уже смотрел бы дальше, в чем может быть причина
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Когда вы выбираете другой пост через Post Object, нужно понимать, что repeater второго поста лежит не в текущем объекте, а в выбранной записи. Поэтому при выводе вложенного repeater нужно передать ID выбранного поста в функции ACF. Если этого не сделать, ACF будет искать поле в текущей странице и ничего не найдёт.
В PHP это выглядело бы так:
$related_post = get_sub_field('post_object_field'); if ($related_post) { $related_id = is_object($related_post) ? $related_post->ID : (int) $related_post; if (have_rows('inner_repeater', $related_id)) { while (have_rows('inner_repeater', $related_id)) { the_row(); echo esc_html(get_sub_field('inner_text')); } } }
У вас в примере похожа не чистая PHP-тема, а шаблонизатор/Twig-подобная разметка. Принцип тот же: сначала получить ID выбранного объекта, потом запросить repeater именно у этого ID. Если библиотека темы не даёт удобного доступа к ACF repeater другого поста, проще вынести вывод в PHP-функцию и вызвать её из шаблона.
Также проверьте формат возврата Post Object в ACF: объект, ID или массив. От этого зависит, как обращаться к выбранной записи. Если возвращается ID, не нужно писать
$post->ID. Если возвращается объект, нужно взятьID. Частая ошибка — пытаться читать repeater выбранного поста, но фактически передавать в ACF текущий post_id.