Я использую цикл в 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>';}
"$i is a multiple of 3-1"
на $i % 3 == 0
Если вам не нужен дополнительный 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;