2015-11-22 2 views
0

У меня есть тема для начинающих WordPress, и одна из возможностей - это возможность выбирать разные форматы архивов, выбирая разные части шаблона. Мой index.php по существу выглядит следующим образом:Обложка WordPress сообщений после X Количество раз, без изменения цикла?

  <?php if (have_posts()) : while (have_posts()) : the_post(); ?> 

       <!-- To see additional archive styles, visit the /parts directory --> 
       <?php get_template_part('parts/loop', 'archive'); ?> 

      <?php endwhile; ?> 

       <?php joints_page_navi(); ?> 

      <?php else : ?> 

       <?php get_template_part('parts/content', 'missing'); ?> 

      <?php endif; ?> 

Один из архивных форматов является формат сетки, который по существу необходимо вывести следующим образом:

Start Row 
    Post 1 
    Post 2 
    Post 3 
End Row 
Start Row 
    Post 4 
    Post 5 
    Post 6 
End Row 
..... 

Обычно, я использую этот метод:

<?php foreach (array_chunk($posts, 2, true) as $posts) : ?> 

    <div class="row"> 

     <?php foreach($posts as $post) : setup_postdata($post); ?> 

      <div class="six columns"> 
       <?php the_content(); ?> 
      </div> 

    <?php endforeach; ?> 

    </div> 

<?php endforeach; ?> 

Однако для этой части кода требуется цикл другого типа, чем стандартный цикл WP, что затрудняет интеграцию в тему без необходимости вносить изменения в цикл.

Так что мой вопрос в том, можно ли обернуть X количество сообщений с помощью div без изменения стандартного цикла WordPress?

ответ

3

Вы можете начать итерирование (запись) по сообщениям с помощью итератора $i;

В вашем archive.php или index.php (файл, который имеет основной запрос):

<?php if (have_posts()) : 
    $i = 1; //Start counting 

    while (have_posts()) : the_post(); ?> 

    <!-- To see additional archive styles, visit the /parts directory --> 
    <?php get_template_part('parts/loop', 'archive'); ?> 

    <?php $i++; //Increase $i ?> 

    <?php endwhile; ?> 

    <?php joints_page_navi(); ?> 

<?php else : ?> 

    <?php get_template_part('parts/content', 'missing'); ?> 

<?php endif; ?> 

И в файле parts/loop (который имеет петлю «<article></article>»), сделать расчеты, чтобы проверить текущий индекс пост и решить, следует ли пропускать, запускать или закрывать тег обертки:

<?php 
//Doing some math   
$x = 4 //Change this to any number you want 
if ($i == 1 || $i == $x || $i % $x == 1) { 
    $before_article = '<div class="wrapper">'; //The wrapper start tag 
} 
if ($i % $x == 0 || $wp_query->current_post + 1 == $wp_query->post_count) { 
    $after_article = '</div>'; //The wrapper end tag 
} 

<?php echo $before_article; ?> 
<article> 
    <!-- post content here --> 
</article> 
<?php echo $after_article; ?> 
<?php $before_article = ''; $after_article = ''; ?> 
+1

Это очень похоже на то, что я закончил делать - ОГРОМНОЕ спасибо! Я сделал это немного по-другому, поэтому граф смог также быть внутри части шаблона: https://github.com/JeremyEnglert/JointsWP/blob/master/parts/loop-archive-grid.php – JeremyE

Смежные вопросы