我的查询会显示所有内容,包括默认posts
,cardguide
和其他自定义帖子类型的帖子。
$args = array(
'post_type' => 'cardguide',
'taxonomy' => 'post_tag',
'tag_id' => $tag_id, // an integer let's say.. 27
'posts_per_page'=> -1,
'orderby' => 'id',
'order' => 'DESC',
);
$my_query = new Wp_query( $args );
^但是这应该仅输出cardguide
类型帖子的列表。
所以我在下面使用pre_get_posts
挂钩尝试了这个。并显示正确的结果。
$args = array(
'taxonomy' => 'post_tag',
'tag_id' => $tag_id,
'posts_per_page'=> -1,
'orderby' => 'id',
'order' => 'DESC'
);
// filtering only 'Card Guides' for grid view
function only_card_guides( $wp_query ) {
$wp_query->set('post_type', 'cardguide');
} add_filter('pre_get_posts', 'only_card_guides');
$my_query = new Wp_query( $args );
第二种方法的问题是,当使用pre_get_posts
时,我的主题页脚被破坏了。我想默认查询已被修改,并且这样做很糟糕。
有没有办法将查询重置回前一阶段?如果我可以保存以前的状态或类似的东西,我们可以说吗?
在第一种方法中,为什么查询不起作用。我错过了什么吗?看看WordPress Codex,我可以说我几乎做了与此处所示相同的事情。