元查询和比较“!=”未按预期工作

时间:2020-04-27 作者:Paolo Sacchetti

我意识到这可能是一个已经提交的问题,我搜索了它,但没有找到。

我有以下简单的元查询:

if (!is_admin() && is_post_type_archive(\'custom_post\') && $query->is_main_query()) {
    $meta_query = array(
        array(
            \'key\' => \'is_hidden\',
            \'value\' => \'on\',
            \'compare\' => \'!=\'
        ),
    );
    $query->set(\'meta_query\', $meta_query);
    $query->set(\'posts_per_page\', -1);
}
我所期望的是在相对归档页面中获得所有“custom\\u post”帖子,这些帖子没有“is\\u hidden”复选框处于活动状态(因此是一个“/空值,而不是“on”->这是我从CMB2 custom field复选框中获得的值)。但它不起作用,结果是根本没有帖子。

而如果我将“compare”设置为“equal”(“=”),它就会起作用,这意味着:我只会收到所有“is\\u hidden”复选框设置为“on”的帖子。

也许我错过了什么。。。

1 个回复
SO网友:Paolo Sacchetti

我已经找到了解决方案(我想):看起来在这种情况下正确的操作符是“不存在”。我注意到,在db Posteta表中,我只得到了值为“on”的“is\\u hidden”键的记录。。。

相关推荐

获取WP_QUERY中的查询帖子ID

我试图找出是否可以在中指定/定义当前查询的帖子WP_Query 争吵,但运气不好。不在the loop, 但是当the query 自身正在运行。具体来说,我想使用post id访问其他元数据。用法示例如下:meta_key => \'_an_existing_meta_key\', meta_value => get_post_meta($current_post_id, \'_another_meta_key\'), meta_compare => \'!