Ретранслятор внутри группы ACF Wordpress - PullRequest
0 голосов
/ 28 августа 2018

Я использую Advanced Custom Fields для Wordpress и пытаюсь зациклить ретранслятор внутри группы. Все, что я получаю, это «Замечание: преобразование массива в строку в ...»

Что не так и как мне это исправить?

<?php if( have_rows('start_horlurar') ): while ( have_rows('start_horlurar') ) : the_row();  ?>

<?php $horlur = get_sub_field('horlur'); ?>

<?php if( have_rows( $horlur['arsmodeller_lankar']) ): while ( have_rows($horlur['arsmodeller_lankar']) ) : the_row();  ?>

<?php echo get_sub_field('lank'); ?>

<?php endwhile; endif; ?>

<?php endwhile; endif; ?>

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Я полагаю, что на этот вопрос был дан правильный ответ, но он не казался достаточно ясным для тех, кто ищет общую реализацию.

<?php

if( have_rows('your_group') ): while ( have_rows('your_group') ) : the_row(); 

    if( have_rows('your_repeater') ): while ( have_rows('your_repeater') ) : the_row();       

        echo get_sub_field('repeater_sub_field');

    endwhile; endif;

endwhile; endif;

?>

Обычно с группами вы можете получить доступ к определенным подполям, используя:

<?php 

$group_var = get_field['your_group']; 

$group_sub_field_var = $group_var['group_sub_field']

?>

Однако, похоже, что с повторителями, вложенными в группы, вы не можете использовать эту стратегию и вынуждены сначала проходить через группу, используя have_rows(), чтобы даже добраться до повторителя.

Если вы посмотрите на групповую документацию по ACF , там будет упомянуто, как циклически проходить через группу, как ретранслятор. Также документация have_rows() содержит более подробную информацию о вложенных циклах с использованием have_rows().

0 голосов
/ 28 августа 2018

Во вложенных повторителях ACF вам не нужно добавлять ссылку на родительский повторитель - достаточно только добавить имя повторителя. Попробуйте вот так.

<?php
if( have_rows('start_horlurar') ): while ( have_rows('start_horlurar') ) : the_row(); 
    echo get_sub_field('horlur');
    if( have_rows('arsmodeller_lankar') ): while ( have_rows('arsmodeller_lankar') ) : the_row(); 
        echo get_sub_field('lank');
    endwhile; endif;
endwhile; endif;
?>

ОБНОВЛЕННЫЙ КОД: Вам нужно также зациклить поле ACF Group, как ACF Repeater. Попробуйте вот так.

<?php
if( have_rows('start_horlurar') ): while ( have_rows('start_horlurar') ) : the_row(); 
    if( have_rows('horlur') ): while ( have_rows('horlur') ) : the_row();       
        if( have_rows('arsmodeller_lankar') ): while ( have_rows('arsmodeller_lankar') ) : the_row(); 
            echo get_sub_field('lank');
        endwhile; endif;
    endwhile; endif;
endwhile; endif;
?>
...