Используйте PHP для дублирования div и рандомизации - PullRequest
0 голосов
/ 20 мая 2019

Я использую ACF с WordPress для просмотра набора изображений для их отображения:

<div class="logos">
  <?php if (have_rows('logos')) : while (have_rows('logos')): the_row();
      $image  = get_sub_field('logo');
      $link   = get_sub_field('logo_link');
      ?>
      <div class="img"><a target="_blank" href="<?php echo $link; ?>"><img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>"></a></div>
    <?php endwhile; endif; ?>
</div>

Что мне интересно, так это то, можно ли дублировать div logos еще 4 раза, а затем рандомизировать возврат цикла изображений? Не уверены, возможно ли это с PHP или , если вместо этого лучше использовать jQuery?

1 Ответ

2 голосов
/ 20 мая 2019

Да, это возможно! Вместо использования have_rows вы можете использовать get_field. Результатом является массив. Затем вы можете использовать функцию php rand и foreach для циклического перемещения по массиву.

Проверьте это ACF example введите описание ссылки здесь для понимания теста.

Я не проверял точный вывод get_field в примере ниже, но вы поймете, что:)

<?php

$images = get_field( 'logos' );
$images1 = rand( $images );
$images2 = rand( $images );
$images3 = rand( $images );
$images4 = rand( $images );

?>

<div class="logos">
    <?php foreach ( $images1 as $image ) : ?>
        <div class="img"><a target="_blank" href="<?php echo $image['logo_link']; ?>"><img src="<?php echo $image['logo']['url']; ?>" alt="<?php echo $image['logo']['alt']; ?>"></a></div>
    <?php endforeach; ?>
</div>

<div class="logos">
    <?php foreach ( $images2 as $image ) : ?>
        <div class="img"><a target="_blank" href="<?php echo $image['logo_link']; ?>"><img src="<?php echo $image['logo']['url']; ?>" alt="<?php echo $image['logo']['alt']; ?>"></a></div>
    <?php endforeach; ?>
</div>

<div class="logos">
    <?php foreach ( $images3 as $image ) : ?>
        <div class="img"><a target="_blank" href="<?php echo $image['logo_link']; ?>"><img src="<?php echo $image['logo']['url']; ?>" alt="<?php echo $image['logo']['alt']; ?>"></a></div>
    <?php endforeach; ?>
</div>

<div class="logos">
    <?php foreach ( $images4 as $image ) : ?>
        <div class="img"><a target="_blank" href="<?php echo $image['logo_link']; ?>"><img src="<?php echo $image['logo']['url']; ?>" alt="<?php echo $image['logo']['alt']; ?>"></a></div>
    <?php endforeach; ?>
</div>

Или используйте цикл for:

<?php $images = get_field( 'logos' ); ?>

<?php for ( $i = 1; $i <= 4; $i++ ) : $randImages = rand( $images ); ?>
    <div class="logos">
        <?php foreach ( $randImages as $image ) : ?>
            <div class="img"><a target="_blank" href="<?php echo $image['logo_link']; ?>"><img src="<?php echo $image['logo']['url']; ?>" alt="<?php echo $image['logo']['alt']; ?>"></a></div>
        <?php endforeach; ?>
    </div>
<?php endfor; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...