我看到很多人喜欢使用pre\\u get\\u posts挂钩而不是query\\u posts
耶!
所以pre_get_posts
过滤器aWP_Query
object 这意味着你可以通过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
(返回满足所有或至少一个元查询的帖子)。
*Note: 这种类型的查询将返回带有“featured”元键的帖子,但其值不是yes
. 它将不包括“特色”元键不存在的帖子。You\'ll be able to do this in 3.5.