您在代码中做了一些不同的错误——或者至少是令人费解和怀疑的错误——我确信这会导致您的查询结果与分页不同步。这里有几个问题,包括query_posts
你真的不应该使用它,再加上一些过滤器。老实说,我并不是为了找出到底是什么错,但我相信,主要是what you need is a meta query.
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$args = array(
\'post_type\' => \'deals\',
\'meta_query\' => array(
array(
\'key\' => \'codes-deal\',
\'compare\' => \'EXISTS\'
)
),
\'paged\' => $paged
);
$query = new WP_Query( $args );
其次,您需要清理分页。请参见第一行。我不知道你是否真的想过滤掉你所说的“有特定meta\\u键”的帖子,或者你是否想过滤那些带有
\'codes-deals\' = true
但我同意你说的。您可以在其他参数中编辑--
orderby
, 等。请注意
\'compare\' => \'EXISTS\'
仅适用于3.5或更高版本。
That code is almost a copy/paste from the Codex. 我所做的只是编辑了你的一些值。抄本是你的朋友。喜欢它。
现在,将其应用于主查询。为此你需要pre_get_posts
, 这比试图操纵WHERE
带的子句post_where
滤器
function exclude_codes_deals_wpse_92268($qry) {
if (is_main_query()) {
$qry->set(\'meta_query\', array(array(
\'key\' => \'codes-deal\',
\'compare\' => \'EXISTS\'
)));
$qry->set(\'post_type\', \'deals\');
}
}
add_filter(\'pre_get_posts\',\'exclude_codes_deals_wpse_92268\');
未经测试,但我相信我有这个权利。同样,您可以编辑所需的任何其他参数。
那会globally alter your main query, 这就是你说你想做的,但我有我的怀疑。有了这些代码,只有“交易”帖子类型才会显示出来,除非您专门创建查询来获取其他内容。我怀疑除了它是主查询之外,还有其他条件可以更改查询。