我对此有意见。我有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\' );
最合适的回答,由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循环。