2014-12-19 5 views
0

У меня есть кусок кода:ACF Repeater Поля разные отсчеты

<?php 
if(have_rows('our_people')): 
$i = 0; 
while (have_rows('our_people')) : the_row(); ?> 
    <?php $i++; ?> 
    <?php if($i > 3): 
     break; ?> 
    <?php endif; ?> 

    <a class="people-thumb fancybox-inline" href="#fancybox-<?php echo $i;?>"> 
       <div class="people-thumb-image" style="width:172px;height:172px;overflow:hidden;background:transparent url(<?php the_sub_field('people_image'); ?>) no-repeat center center; background-size:cover;"></div> 
       <div class="people-thumb-details"> 
        <h3><?php the_sub_field('people_name_acf'); ?></h3> 
        <p><?php the_sub_field('people_title'); ?></p> 
       </div> 
    </a> 

    <div class="peopleoverlay"> 
     <div id="fancybox-<?php echo $i;?>"> 
     <img src="<?php the_sub_field('people_image'); ?>" width="172" style="float:left;margin:0 10px 10px 0;"> <?php the_sub_field('people_details'); ?> 
     </div> 
    </div> 

<?php endwhile;  

else : 

endif; 
?> 

Что это он просто сосчитать записи, а затем останавливается через 3 - работает отлично.

Однако, с другими строками в поле ретранслятора (после 3), как мне получить те, которые также отображаются? Рассуждение состоит в том, что эти 3 находятся в отдельном div diving, и все остальные записи помещаются в другой div.

Однако, если я попытаюсь повторить этот код, ничего не отображается. Значит, мне нужно как-то сбросить это? Я хочу, чтобы все строки ретранслятора после 3 отображались в другом разделе.

ответ

0

Похоже, что ваш код специально говорит, что он не отображает более 3 результатов! Аннотировано ниже.

$i = 0; // Start a counter 

while (have_rows('our_people')) : the_row(); ?> // As long as there are posts to display 
<?php $i++; ?>   // increment the counter 
<?php if($i > 3): // if the counter is 4 or more... 
    break; ?>    // don't execute the code below; jump out of the while loop. 
<?php endif; ?> 

Это, как говорится, удалите $i = 0, и следующие строки:

<?php $i++; ?> 
<?php if($i > 3): 
    break; ?> 
<?php endif; ?> 

Это позволит ACF для отображения всех людей, хранящиеся в этом metafield.

Однако, если вы хотите добавить другой класс в 4-й div и выше, измените условие, чтобы удалить оператор break и обернуть результат в div, который идентифицирует его.

<?php $i++; ?> 
<?php if($i > 3): ?> 
    <div class="other-style"> 
<?php endif; ?> 

Тогда вам придется закрыть его в конце с помощью другой проверки.

... 
<?php if($i > 3): ?> 
    </div> <!-- .other-style --> 
<?php endif; ?> 
Смежные вопросы