Вторичный запрос прерывает главный запрос

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

$args = array( 'post_type' => 'quote', 'posts_per_page' => 1, 'orderby' => 'rand' ); $posts = get_posts( $args ); //The code between here and the next comment doesn't really matter. I can remove it //and the problem will still exist. As soon as I make the get_posts() call above // I get the problem if (sizeof($posts) > 0) { echo '<p class="quote"><span class="quote-sym">&quot;</span>'.$posts[0]->post_content.'<span class="quote-sym">&quot;</span></p>'; $author = trim(get_field("author", $posts[0]->ID)); if (!empty($author)) {echo '<p class="author">- '.$author.'</p>';} } //End block wp_reset_postdata(); 

Это работает, и я могу показать одну случайную цитату. (Я использую плагин дополнительных настраиваемых полей, который добавляет метод get_field в код выше.) Однако мой основной контент цикла поврежден. Вместо того, чтобы показывать содержимое основной петли на странице, моя цитата повторяется второй раз на своем месте. Это код, который я использую для моего основного цикла.

  <?php while(have_posts()) : the_post(); ?> <div class="post" id="post-<?php the_ID(); ?>"> <div class="entry"> <?php the_content(); ?></div><!-- end entry --> </div> <!--end post --> <?php endwhile; ?> 

Если я удалю код, который отображает цитату, мой основной контент цикла будет восстановлен. Я думал, что вызов wp_reset_postdata() был ключом к использованию вторичного цикла с основным циклом, но в этом случае он, похоже, не помогает.

Может кто-то указать мне верное направление?

Solutions Collecting From Web of "Вторичный запрос прерывает главный запрос"

вам не нужно вызывать wp_reset_postdata() для get_posts() потому что на самом деле он не изменяет глобальную переменную $wp_query .

$posts хотя это глобальная переменная, используемая WordPress. Измените это на новое имя и что вы должны работать.

 $args = array( 'post_type' => 'quote', 'posts_per_page' => 1, 'orderby' => 'rand' ); $quote_posts = get_posts( $args ); if (sizeof($quote_posts) > 0) { echo '<p class="quote"><span class="quote-sym">&quot;</span>'.$quote_posts[0]->post_content.'<span class="quote-sym">&quot;</span></p>'; $author = trim(get_field("author", $quote_posts[0]->ID)); if (!empty($author)) {echo '<p class="author">- '.$author.'</p>';} } //End block