我有一堆属于第6类的帖子,每个帖子都有相同的元字段。我对两个字段特别感兴趣:“pce\\U monday\\u open”和“pce\\U monday\\u close”,这两个字段都有数值。
我想运行query\\u posts()查询,返回类别6中的帖子,其中一些数字$pce\\u time位于两个元字段的值之间。我当前的查询参数是:
$pce_arg = array(
\'cat\' => 6,
\'meta_query\' => array(
array(\'key\' => \'pce_monday_open\', \'value\' => $pce_time, \'compare\' => \'<=\' ),
array(\'key\' => \'pce_monday_close\', \'value\' => $pce_time, \'compare\' => \'>=\' )
)
);
不幸的是,这似乎不起作用,没有帖子被退回。我的搜索似乎可以与其他查询参数配合使用(例如搜索其他元字段以获得精确匹配),因此我认为我的比较参数存在问题。
我写的东西有什么明显的错误吗?或者这是正确的,问题可能在其他地方?
SO网友:cybmeta
第一do not query_posts
; 使用WP Query 相反尽管如此,我认为pce_monday_open
低于pce_monday_close
你想在pce_monday_open
和pce_monday_close
, 所以我认为你的比较逻辑是错误的。此外,您可能需要设置两个元查询数组之间的关系:
$pce_arg = array(
\'cat\' => 6,
\'meta_query\' => array(
\'relation\' => \'AND\',
array(
\'key\' => \'pce_monday_open\',
\'value\' => $pce_time,
\'compare\' => \'<=\' ),
array(\'
key\' => \'pce_monday_close\',
\'value\' => $pce_time,
\'compare\' => \'>=\'
)
)
);
$query = new WP_Query( $pce_arg );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
//Loop on each post
}
} else {
// no posts found
}
wp_reset_postdata();