WordPress wp_reset_query () не возвращается к последнему запросу? - PullRequest
1 голос
/ 08 февраля 2011

Вот что у меня есть:

Я редактирую пользовательскую страницу таксономии. При посадке на страницу для запроса страницы автоматически устанавливается возвращение списка сообщений в соответствии с пользовательской таксономией, в которой я работаю. В этом шаблоне страницы я запускаю этот пост:

        query_posts(
            array_merge(
                array( 'post__in' => $_SESSION['lpoc_search_data'], 'orderby' => 'post__in' ),
                $wp_query->query
            )
        );

Я запускаю свой цикл, и запрос, который я сделал выше, работает хорошо.

<?php while (have_posts()) : the_post(); ?>
  My Loop
<?php endwhile; ?>

Но внутри вышеуказанного цикла я делаю еще один запрос:

      <?php $args = array('p' => $officeID, 'post_type' => "offices"); query_posts($args); ?>
      <?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
         //Inside secondary loop
      <?php endwhile; ?>
      <?php wp_reset_query(); ?>

Как видите, я использую wp_reset_query (); так что цикл выше возвращается в исходное состояние. Или так вы думаете. Но происходит то, что wp_reset_query () сбрасывает запрос к запросу страницы, а не запрос, который я делал в первом блоке кода. Почему это происходит и как я могу предотвратить это?

С уважением

Scott

1 Ответ

2 голосов
/ 08 февраля 2011

Используйте get_posts () , который не касается исходного запроса!Используйте setup_postdata (), как в примере, который вы найдете на странице кодекса.

<ul>
<?php
  global $post;
  $tmp_post = $post;
  $args = array( 'numberposts' => 5, 'offset'=> 1, 'category' => 1 );
  $myposts = get_posts( $args );
  foreach( $myposts as $post ) : setup_postdata($post); ?>
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
  <?php endforeach; ?>
<?php $post = $tmp_post; ?>
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...