Задать вопрос
@gruzilarus

Как сделать нестандартный цикл вывода постов Wordpress?

Добрый день всем.

Вопрос для знатоков PHP должен быть элементарный, мне же на него ответа не найти.

На сайте нужно реализовать нестандартный вывод постов. Не по вертикале, а по горизонтали. Посты(.post) идут колонками (.content_one_fourth), по 4 поста в каждой.

<div class="content_one_fourth">
	<?php if ($posts) : ?>
	<?php foreach ($posts as $post) : setup_postdata ($post); ?>
		<div class="post">
		      <? $img_post=wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'thumbnail-post');?>
		      <div class="post_img" style="background: url(<?=$img_post[0]?>);"></div>
		      <a class="album_title" href="<?php the_permalink();?>"><?php the_title(); ?></a>
		      <p class="artist_name"><?php the_field('album_artist'); ?></p>
		      <p class="album_year"><?php the_field('album_year'); ?></p>
		 </div>
		<?php endforeach; ?>
		<?php endif; ?>							
</div>


Дело в том, что не совсем понятно, как сделать такой цикл Wordpress, чтобы при создании более 4 постов, в цикле появлялась новая колонка (.content_one_fourth), и в ней этот пост и последующие три?
  • Вопрос задан
  • 3447 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
$i = 0;
foreach( $posts as $post ) {
// в каждом 1-м посту каждой четверки открываем див
if ($i % 4 === 0) {
echo '<div class="content_one_fourth">';
}

// остальная логика

// в каждом 4-м посту каждой четверки закрываем див
if ($i % 4 === 3) {
echo '</div">';
}
$i++;
}
// если в последней четверке не 4 поста, то див не закрыт. закрываем его
if ($i % 4 !== 0) {
echo '</div">';
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
it_proger29
@it_proger29
Битрикс
В ответе сверху есть опечатки (смотрите мой комментарий).

<?php
          $args = array(
            'posts_per_page' => -1,
            'orderby' => 'date',
            'post_type' => 'post',
          );

          $query = new WP_Query( $args );

          // Цикл
          if ( $query->have_posts() ) {
            $i = 0; 
            while ( $query->have_posts() ) {
              $query->the_post();
              // в каждом 1-м посту каждой четверки открываем див
              if (($i % 4) === 0) {
                echo '<div class="swiper-slide"><div class="community-slider__items__grid">';
              }
              // Остальная логика
              get_template_part('loop/loop','community');
              // в каждом 4-м посту каждой четверки закрываем див
              if ($i % 4 === 3) {
                echo '</div></div>';
              }
              $i++;
            }
            // если в последней четверке не 4 поста, то див не закрыт. закрываем его
            if ($i % 4 !== 0) {
              echo '</div></div>';
            }
          }
          wp_reset_postdata();
?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы