Что я могу изменить в своем PHP-коде, чтобы галерея в репитере работала? - PullRequest
0 голосов
/ 04 ноября 2019

С ACF есть возможность добавлять галереи в поля повторителя. Мой вопрос, однако, заключается в том, как мне написать PHP, который может продемонстрировать эту галерею.

Я пытался найти похожие вопросы, решения которых мне не помогли. Также я попытался найти видео на YouTube и поискать на сайте документации ACF. Код, поддерживающий комбинацию для галереи в повторителе, мне не подходит.

Это стандартный формат ACF PHP для повторителя:

<?php

// check if the repeater field has rows of data
if( have_rows('repeater_field_name') ):

    // loop through the rows of data
    while ( have_rows('repeater_field_name') ) : the_row();

        // display a sub field value
        the_sub_field('sub_field_name');

    endwhile;

else :

    // no rows found

endif;

?>

Это стандартная ACFФормат PHP для галереи:

<?php 
$images = get_field('gallery');
$size = 'full'; // (thumbnail, medium, large, full or custom size)
if( $images ): ?>
    <ul>
        <?php foreach( $images as $image_id ): ?>
            <li>
                <?php echo wp_get_attachment_image( $image_id, $size ); ?>
            </li>
        <?php endforeach; ?>
    </ul>
<?php endif; ?>

Я надеюсь, что смогу как-то объединить эти два, чтобы получить ожидаемый результат. Однако мои знания PHP невелики. Так что вся помощь будет приветствоваться.

1 Ответ

0 голосов
/ 04 ноября 2019

Вы можете сделать альтернативное решение. Если вам нужен ретранслятор с изображением в каждом, вы можете просто добавить изображение вместо галереи. Если вам нужно несколько изображений на одну итерацию, вы можете добавить ретранслятор внутри ретранслятора.

Решение 1:

<?php
// check if the repeater field has rows of data
if( have_rows('repeater_field_name') ):
    // loop through the rows of data
    while ( have_rows('repeater_field_name') ) : the_row();
        echo '<img src="' . get_sub_field('image_field_name') . '">';
    endwhile;
else :
    // no rows found
endif;
?>

Решение 2:

<?php
// check if the repeater field has rows of data
if( have_rows('repeater_field_name') ):
    // loop through the rows of data
    while ( have_rows('repeater_field_name') ) : the_row();
        echo '<ul>';
        while( have_rows('repeater_sub_field_name') ) : the_row();
            echo '<li><img src="' . get_sub_field('image_field_name') . '"></li>';
        endwhile;
        echo '</ul>';
    endwhile;
else :
    // no rows found
endif;
?>
...