Использование цикла WHILE дважды / временно прерывая цикл WHILE - PullRequest
0 голосов
/ 31 октября 2018

Фон - Создан веб-сайт WordPress и использованы расширенные пользовательские поля ACF для создания полей ввода на моих страницах.

Затем я заполнил поля страниц, чтобы я мог создать / использовать эту переменную:

<?php
    $case_study_image_gallery = get_field('case_study_image_gallery');
?>

Затем я вызываю подполе в цикле while, затем вызываю ['url'] при использовании переменной, чтобы разбить массив изображений.

<?php if( $case_study_image_gallery ) : ?>

    <div class="case-study-slider">
        <?php
            while (have_rows('case_study_image_gallery')): the_row();
            $case_study_image = get_sub_field('case_study_image');
        ?>

            <div class="case-study-slide">
                <img class="case-study-slider-image" src="<?php echo $case_study_image['url']; ?>">
            </div>

        <?php endwhile; ?>
    </div>
    <div class="case-study-slider-nav">
        <?php
            while (have_rows('case_study_image_gallery')): the_row();
            $case_study_image = get_sub_field('case_study_image');
        ?>

            <div class="case-study-nav-slide">
                <img class="case-study-slider-nav-image" src="<?php echo $case_study_image['url']; ?>">
            </div>

        <?php endwhile; ?>
    </div>

<?php endif; ?>

Как вы можете видеть, я разбил свое время на несколько разделов, поскольку мне нужно использовать одинаковые значения как для изображений слайдера, так и для уменьшенных изображений. При этом я должен поместить этот код между двумя использованиями изображения подполя.

        <?php endwhile; ?>
    </div>
    <div class="case-study-slider-nav">
        <?php
            while (have_rows('case_study_image_gallery')): the_row();
            $case_study_image = get_sub_field('case_study_image');
        ?>

Это ЯВНО не будет работать, так как первый цикл прожег экземпляры изображений.

По сути, я ищу способ сделать разрыв в цикле, не перезапуская и не повторяя его и не вызывая следующую строку данных. Как это:

<?php if( $case_study_image_gallery ) : ?>

<div class="case-study-slider">
    <?php
        while (have_rows('case_study_image_gallery')): the_row();
        $case_study_image = get_sub_field('case_study_image');
    ?>

        <div class="case-study-slide">
            <img class="case-study-slider-image" src="<?php echo $case_study_image['url']; ?>">
        </div>

    <?php 
        HAVE A BREAK FROM THE WHILE; 
    ?>
</div>
<div class="case-study-slider-nav">
    <?php
        CONTINUE WHILE
    ?>

        <div class="case-study-nav-slide">
            <img class="case-study-slider-nav-image" src="<?php echo $case_study_image['url']; ?>">
        </div>

    <?php endwhile; ?>
</div>

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

В ответ на Simonw16:

<div class="cs-slider">
    <div class="case-study-slider">
        <div class="case-study-slide"><img class="case-study-slider-image" src="https://localhost/materialshub/wp-content/uploads/2018/09/silicone-elastomer-tube.png"></div>
        <div class="case-study-slide"><img class="case-study-slider-image" src="https://localhost/materialshub/wp-content/uploads/2018/09/silicon-sputtering-target.jpeg"></div>
        <div class="case-study-slide"><img class="case-study-slider-image" src="https://localhost/materialshub/wp-content/uploads/2018/09/zirconium-lump.jpg"></div>
    </div>
    <div class="case-study-slider-nav">
        <div class="case-study-nav-slide"><img class="case-study-slider-nav-image" src="https://localhost/materialshub/wp-content/uploads/2018/09/silicone-elastomer-tube.png"></div>
        <div class="case-study-nav-slide"><img class="case-study-slider-nav-image" src="https://localhost/materialshub/wp-content/uploads/2018/09/silicon-sputtering-target.jpeg"></div>
        <div class="case-study-nav-slide"><img class="case-study-slider-nav-image" src="https://localhost/materialshub/wp-content/uploads/2018/09/zirconium-lump.jpg"></div>
    </div>
</div>

1 Ответ

0 голосов
/ 31 октября 2018

Вы можете сделать что-то подобное?

`` `

<?php
    $image_urls = [];
    while (have_rows('case_study_image_gallery')): 
        the_row();
        $image_urls[] = get_sub_field('case_study_image');
    endwhile;
?>

<div class="case-study-slider">
    <?php foreach($image_urls as $image_url): ?>
        <div class="case-study-slide">
            <img class="case-study-slider-image" src="<?php echo $image_url; ?>">
        </div>
    <?php endforeach; ?>
</div>

<div class="case-study-slider-nav">
    <?php foreach($image_urls as $image_url): ?>
        <div class="case-study-nav-slide">
            <img class="case-study-slider-nav-image" src="<?php echo $image_url; ?>">
        </div>
    <?php endforeach; ?>
</div>

`` `

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...