Использование query_posts внутри цикла single.php

Внутри моего цикла в single.php я использовал пользовательский запрос, используя get_posts для возврата сообщений, относящихся к определенной категории.

 <?php global $post; $paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1; $myposts = get_posts("paged=$paged&category=5");?> <?php foreach($myposts as $post) :?> <?php the_title();?> <?php endforeach; ?> 

Проблема в том, что исходный цикл, который является циклом single.php, кажется, не работает после выполнения запроса. Например, навигационные ссылки (следующие и предыдущие) не работают.

Вы когда-нибудь сталкивались с этой проблемой? ваша помощь приветствуется.

Solutions Collecting From Web of "Использование query_posts внутри цикла single.php"

Вам нужно вызвать wp_reset_postdata() после запроса для восстановления глобальной переменной $post , используемой функциями навигационной ссылки для определения следующих / предыдущих сообщений.

Вы также можете использовать WP_Query вместо get_posts . О том же, хотя, но для справки:

 $paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1; $args = array ( 'category' => 5, 'paged' => $paged, 'posts_per_page'=> 5 ); $catPosts = new WP_Query( 'post_type=post' ); if( $catPosts->have_posts() ){ ?> <ul> <?php while ($catPosts->have_posts()) : $catPosts->the_post(); ?> <li> <a href="<?php the_permalink();?>"><?php the_title(); ?></a> </li> <?php endwhile; ?> </ul> <?php } else { // no posts found } wp_reset_postdata();