执行自定义查询时边栏小部件未显示的问题

时间:2012-04-03 作者:Claire

我对此有意见。我有2个while循环,每个循环都有不同的自定义帖子类型。它们都工作得很好,只是我的侧边栏内容(即小部件)没有出现。我想这是因为我没有运行默认查询。

我的两个问题是:

query_posts(\'post_type=offered\'); 
while (have_posts()) : the_post(); ?>
....content
endwhile;
以及

$wanted_query = new WP_Query(\'post_type=wanted\');
while ($wanted_query->have_posts()) : $wanted_query->the_post();
....content
endwhile;
然而,当我尝试如下组合它们时,我得到了侧栏内容,但没有我的帖子!

global $query_string;
query_posts( $query_string . \'&post_type=offered\' );

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

执行查询时,您会更改环境,特别是当前发布和查询对象。要将事情重置回查询循环之前的状态,您应该:

query_posts(\'post_type=offered\'); 
if(have_posts(){
    while (have_posts()) : the_post(); ?>
    ....content
    endwhile;
}
wp_reset_query(); // reset query!!!!

$wanted_query = new WP_Query(\'post_type=wanted\');
if($wantedquery->have_posts()){
    while ($wanted_query->have_posts()) : $wanted_query->the_post();
    ....content
    endwhile;
}
wp_reset_postdata();
等等,同样,在做循环之前检查你是否有帖子,而不是直接进入while循环。

结束