2011-02-08 3 views
1

Это то, что у меня есть:Wordpress wp_reset_query() не возвращается к последнему запросу?

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

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

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

<?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() сбрасывает запрос на запрос страницы, а не запрос, который я сделал в первом блоке кода. Почему это происходит и как я могу предотвратить это?

С наилучшими пожеланиями

Скотт

ответ

2

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

<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> 
+0

Thx для этого. Однако, исправление этой проблемы, которую я имел, открыло другое: P – Brady

Смежные вопросы