2016-10-11 3 views
1

Я пытаюсь получить последние сообщения для отображения с помощью шаблона страницы я строй для страниц, цикл не выполняется последним сообщения только одна страницыWordPress петля прибудет пост не страница одного

нормально, у меня есть простой цикл, который получает последнее сообщение

мой цикл

  <?php 
      if (have_posts()) : while (have_posts()) : the_post(); 
       get_template_part('content', get_post_format()); 
      endwhile; endif; 
      ?> 

и content.php

<div class="blog-post"> 

    <h2 class="blog-post-title"> 
     <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 
    </h2> 

    <p class="blog-post-meta"> 
     <?php the_date(); ?>by <a href="#"><?php the_author(); ?></a> 
     <a href="<?php comments_link(); ?>"> 
      <?php printf(_nx('One Comment', '%1$s Comments', get_comments_number(), 'comments title', 'textdomain'), number_format_i18n(get_comments_number())); ?> 
     </a> 
    </p> 

    <?php if (has_post_thumbnail()) {?> 
     <div class="row"> 
      <div class="col-md-4"> 
       <?php the_post_thumbnail('thumbnail'); ?> 
      </div> 
      <div class="col-md-6"> 
       <?php the_excerpt(); ?> 
      </div> 
     </div> 
    <?php } else { ?> 
     <?php the_excerpt(); ?> 
    <?php } ?> 

</div> 

Когда я запускаю цикл в index.php, я получаю последнее сообщение в блоге, отлично.

Однако я строю шаблон страницы, я пытаюсь включить цикл на этой странице, я просто получить одну страницу (не все сообщения).

мой шаблон

<div class="row"> 
     <div class="col-sm-12"> 
      // content bar 
      <?php get_template_part('advicecentre_bar', get_post_format()) ?> 

      // cmd driven content 
      <?php 
      if (have_posts()) : while (have_posts()) : the_post(); 
       get_template_part('content_page', get_post_format()); 
      endwhile; endif; 
      ?> 

      // recent post 
      <?php 
      if (have_posts()) : while (have_posts()) : the_post(); 
       get_template_part('content', get_post_format()); 
      endwhile; endif; 
      ?> 


     </div> <!-- /.col --> 
    </div> <!-- /.row --> 

<?php get_footer(); ?> 

ответ

2

Если вы используете несколько петель на одной и той же странице, вы должны использовать rewind_posts() так:

<div class="row"> 
    <div class="col-sm-12"> 
     // content bar 
     <?php get_template_part('advicecentre_bar', get_post_format()); ?> 

     // cmd driven content 
     <?php 
     if (have_posts()) : while (have_posts()) : the_post(); 
      get_template_part('content_page', get_post_format()); 
     endwhile; endif; 
     ?> 

     <?php rewind_posts(); ?> 

     // recent post 
     <?php 
     if (have_posts()) : while (have_posts()) : the_post(); 
      get_template_part('content', get_post_format()); 
     endwhile; endif; 
     ?> 


    </div> <!-- /.col --> 
</div> <!-- /.row --> 

<?php get_footer(); ?> 

Этот "сбрасывает" петлю на это оригинальное состояние и позволяет просматривать сообщения снова. В исходном коде вы просматриваете все сообщения, а затем в своем втором просмотре цикла через ничего, поскольку вы уже просмотрели все сообщения!

+0

Хм интересно, +1 за помощь мне понять. тем не менее, это не устраняет мою проблему. Я все еще вижу только страницу в работе над шоу, поскольку вывод цикла не все последние сообщения – Beep

0

Хм, я нашел это решение, используя для каждого, а не цикл while, кажется, работает, но я не уверен, что это лучший способ.

   <ul> 
       <?php 
       $recent_posts = wp_get_recent_posts(); 
       foreach($recent_posts as $recent){ 
        echo '<li><a href="' . get_permalink($recent["ID"]) . '">' . $recent["post_title"].'</a> </li> '; 
       } 
       wp_reset_query(); 
       ?> 
      </ul> 

UPDATE

<?php 
    $args = array('numberposts' => 5); 
    $recent_posts = wp_get_recent_posts($args); 
    foreach ($recent_posts as $recent) { 
     $excerpt = wp_trim_excerpt($recent['post_content']); 
     $permalink = get_permalink($recent["ID"]); 
     $title = esc_attr($recent["post_title"]); 
     $thumbnail = get_the_post_thumbnail($recent["ID"], 'thumbnail'); 
     echo '<li><a href="' . $permalink . '" title="Look ' . $title . '" >' . $thumbnail . $title . '</a></li>'; 
     echo $excerpt; 
    } 
    ?>