Я использую цикл в wordpress для вывода сообщений. Я хочу обернуть каждые три записи внутри div. Я хочу использовать счетчик для увеличения на каждой итерации цикла, но я не уверен в синтаксисе, который говорит «если $ i кратно 3» или «если $ i кратно 3 – 1».
$i = 1; if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post(); // If is the first post, third post etc. if("$i is a multiple of 3-1") {echo '<div>';} // post stuff... // if is the 3rd post, 6th post etc if("$i is a multiple of 3") {echo '</div>';} $i++; endwhile; endif;
Как это сделать? благодаря!
Почему бы не сделать следующее? Это откроет его и закроет после третьего сообщения. Затем закройте конец div в случае, если на дисплее не будет отображаться несколько цифр.
$i = 1; //added before to ensure it gets opened echo '<div>'; if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post(); // post stuff... // if multiple of 3 close div and open a new div if($i % 3 == 0) {echo '</div><div>';} $i++; endwhile; endif; //make sure open div is closed echo '</div>';
Если вы не знаете, %
– оператор modus вернет остаток после того, как будут разделены две цифры.
Используйте оператор модуля :
if ( $i % 3 == 0 )
В коде вы можете использовать:
if($i % 3 == 2) {echo '<div>';}
а также
if($i % 3 == 0) {echo '</div>';}
если вам не нужен дополнительный div, вы можете использовать это:
$i = 0; $post_count = $wp_query->found_posts; if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) :$wp_query->the_post(); // If is the first post, third post etc. ( ($i%3) == 0 ) ? echo '<div>' : echo ''; // post stuff... // if is the 3rd post, 6th post etc or after the last element ( $i == ($post_count - 1) || (++$i%3) == 0 ) ? echo '</div>' : echo ''; endwhile; endif;