Перемотка сообщений затем показывает только первое сообщение

Есть ли способ запустить цикл как обычно (показывая все сообщения), перемотать сообщения и затем сделать вторичный цикл (если он действительно нужен), чтобы показать только первое сообщение в шаблоне архива?

Мое требование – установить шаблон, который генерирует список всех сообщений текущей категории на боковой панели, а затем отображает только первое сообщение в основной области содержимого.

Что-то в этом роде:

<?php if (have_posts()) : ?> <div class="sidebar"> <ul> <?php while (have_posts()) : the_post(); ?> <li> <a href="<?php the_permalink() ?>" title="Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a> </li> <?php endwhile; ?> </ul> </div> <?php rewind_posts() ?> <div class="maincontent"> <?php while (have_posts()) : the_post(); ?> <?php the_content() ?> <?php endwhile; ?> </div> <?php endif; ?> 

Там, если несколько способов достичь того, что вам нужно:

Опция 1:

Добавьте break после the_content() в основной контур содержимого.

Вариант 2:

Вы можете сделать что-то подобное, но я не думаю, что это хорошее решение.

 <?php if (have_posts()) : $first_post = true; ?> <div class="sidebar"> <ul> <?php while (have_posts()) : the_post(); ?> <?php if ( $first_post ) { $first_post_content = get_the_content(); $first_post = false; } ?> <li> <a href="<?php the_permalink() ?>" title="Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a> </li> <?php endwhile; ?> </ul> </div> <?php rewind_posts() ?> <div class="maincontent"> <?php echo $first_post_content; ?> </div> <?php endif; ?> 

Вариант 3:

Второй запрос. На мой взгляд, лучшее решение.

 <?php if (have_posts()) : ?> <div class="sidebar"> <ul> <?php while (have_posts()) : the_post(); ?> <li> <a href="<?php the_permalink() ?>" title="Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a> </li> <?php endwhile; ?> </ul> </div> <?php rewind_posts() ?> <div class="maincontent"> <?php $the_query = new WP_Query( array( 'posts_per_page' => 1 ) ) ?> <?php while ($the_query->have_posts()) : $the_query->the_post(); ?> <?php the_content(); ?> <?php endwhile; wp_reset_postdata() ?> </div> <?php endif; ?>