Я использую оператор по модулю, чтобы после запуска цикла 3 раза он был заключен в «строку» div.
Однако теперь я хотел бы немного добавить в код, чтобы, если цикл выполнялся только дважды, он изменял ширину столбцов на «large-6» вместо «large-4».
Это было бы возможно, или это испортило бы оригинальную функцию по модулю?
Примечание. Для этого я использую расширенные настраиваемые поля, из которых исходит функция have_rows.
Текущий код:
<?php if( have_rows('content_modules') ): ?>
<?php $i = 0; while( have_rows('content_modules') ): the_row(); ?>
<?php if($i % 3 == 0): ?>
<div class="row">
<?php endif; ?>
<div class="large-4 columns">
<?php if( !empty($link) ): ?>
<a href="<?php echo $link ?>"><img src="<?php echo $photo ?>" />
<h3><?php echo $title ?></h3></a>
<?php else: ?>
<img src="<?php echo $photo ?>" />
<h3><?php echo $title ?></h3>
<?php endif; ?>
<?php echo $content ?>
</div>
<?php if($i % 3 == 2): ?>
</div>
<?php endif; ?>
<?php $i++; endwhile; endif;?>
Хорошо, я предполагаю, что вы используете Advanced Custom Fields (ACF) или что-то еще, потому что, насколько мне известно (и Google) have_rows()
это не вызов функции WordPress.
Если это have_rows()
из ACF возвращает логическое значение, как следует из названия. Это усложняет вашу задачу, так как вам нужно знать, прежде чем вы начнете цикл, сколько строк в нем есть.
Вы можете сделать быстрый цикл перед основным циклом, сосчитать строки и затем решить, какой класс вам нужен для CSS. Это не оптимально, но, честно говоря, в какой-то момент вы должны посчитать их, чтобы решить.
Как только вы их посчитаете, вы можете решить, установить переменную, а затем внутри существующего цикла использовать вновь созданную переменную.
Я уверен, что вам придется сбросить цикл с wp_reset_query()
между вашими петлями. Хотя я могу ошибаться по этому поводу.
НТН,
= C =
Других решений пока нет …