我看到许多人更喜欢使用pre_get_posts挂钩而不是query_posts
好极了!
所以pre_get_posts
过滤器WP_Query
的对象,这意味着什么,你可以通过做query_posts()
你可以通过做$query->set()
和$query->get()
。特别是,我们可以利用该meta_query
属性(请参阅Codex):
$meta_query = array(
array(
'key'=>'featured',
'value'=>'yes',
'compare'=>'!=',
),
);
$query->set('meta_query',$meta_query);
但是..它将替换原始的“元查询”(如果有的话)。因此,除非您想完全替换原始的元查询,否则我建议:
//Get original meta query
$meta_query = $query->get('meta_query');
//Add our meta query to the original meta queries
$meta_query[] = array(
'key'=>'featured',
'value'=>'yes',
'compare'=>'!=',
);
$query->set('meta_query',$meta_query);
这样,我们将元查询与现有元查询一起添加。
您可能/可能不希望将relation
属性设置$meta_query
为AND
或OR
(返回满足所有或至少一个元查询的帖子)。
* 注意:此类查询将返回带有“功能”元关键字的帖子,但其值不是yes
。它不会包括“功能”元键不存在的帖子。您将可以在3.5中做到这一点。