2011-02-08 8 views
1

これは私が持っているものです:ワードプレスwp_reset_query()は最後のクエリに戻りませんか?

私はカスタムタクソノミーのページを編集しています。ページ上に着陸すると、ページのクエリは自動的に設定され、カスタム分類の下にある投稿のリストが返されます。そのページテンプレートでは、私はこのクエリの投稿を実行します:

 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()を使用してください。

<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

関連する問題