@andreypodkovyrov

Как сделать вложенный цикл или вообще его избежать?

Уже задавал подобный вопрос, но до сих пор не разобрался.

Задача — сделать подобное отображение записей следующим образом:
есть записи с тегом 10 и есть записи без этого тега. 3 колонки. Нужно сделать вывод записи без тега, а под ней 2-3 записи с тегом 10. Высота блока с записью без тега может быть любой, поэтому задать фикс высоту и выводить в другом блоке снизу не вариант. Нужно выводить эти записи в одном блоке.

Лучше посмотреть на картинку, и как выходит у меня с вложенным циклом, код дальше:

8777adfd3d124b72973ad67293158c45.jpg

Код

index.php

<?php /* The loop */ ?>
      
      <?php query_posts(array('tag__not_in' => array(10))); ?> 
      
      <?php $count = 0 ?>
      
      <?php while ( have_posts() ) : the_post(); ?>
      
      
  

        <?php get_template_part( 'content', get_post_format() ); ?>
        
        <?php $count++ ?>
        
      <?php endwhile; ?>


content.php

<?php
 $args = array(
  'showposts' => 2
  ,'tag' => 'status'
  ,'offset'=> (2*$count)
  
);

$query = new WP_Query( $args );

// Цикл
if ( $query->have_posts() ) {
  
  

  
  while ( $query->have_posts() ) 
  



  {
    $query->the_post(); 
    echo '<li>' . get_the_title() . '</li>';
  }
} else {
  // Постов не найдено
}


?>


Что пытаюсь сделать: считать циклы вывода и увеличивать отступ внутреннего цикла на 2. Что получается: одинаковые посты с тегом 10 под всеми записями.

Где ошибка? Как исправить?
  • Вопрос задан
  • 2280 просмотров
Решения вопроса 1
Думаю проблема в том, что $count не передаётся в шаблон content.php, попробуй так
set_query_var( 'count', $count );
get_template_part( 'content', get_post_format() );
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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