Несколько операторов по модулю в одном цикле?

Я использую оператор по модулю, чтобы после запуска цикла 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;?>

1

Решение

Хорошо, я предполагаю, что вы используете Advanced Custom Fields (ACF) или что-то еще, потому что, насколько мне известно (и Google) have_rows() это не вызов функции WordPress.

Если это have_rows() из ACF возвращает логическое значение, как следует из названия. Это усложняет вашу задачу, так как вам нужно знать, прежде чем вы начнете цикл, сколько строк в нем есть.

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

Как только вы их посчитаете, вы можете решить, установить переменную, а затем внутри существующего цикла использовать вновь созданную переменную.

Я уверен, что вам придется сбросить цикл с wp_reset_query() между вашими петлями. Хотя я могу ошибаться по этому поводу.

НТН,

= C =

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]