Wordpress Query Vars:使用值或键不存在进行过滤



我使用Wordpress,并在自定义帖子类型中添加了一个自定义meta_key。然后我在帖子的面板中添加了这个meta_key作为一列。

该meta_key的值为"yes"one_answers"no"。但由于在创建帖子时没有添加元键,如果我没有发现任何值,我会在列中显示"no"。

到目前为止,一切都很好。但当我尝试过滤时,我可以得到带有"yes"meta_key的帖子:

$query->query_vars['meta_query'][] = array(
'key' => 'my_custom_key',
'value' => 'yes',
); 

如果我对"no"也这样做,我可以获得所有meta_key设置为"no"的帖子,但不能获得没有设置meta_key的帖子。因此,对于这种情况,我会:

$query->query_vars['meta_query'][] = array(
'key' => 'my_custom_key',
'value' => 'no',
'compare' => 'NOT EXISTS',
); 

然而,我不能同时获得带有meta_key"no"的帖子和没有该meta_key的帖子,我该如何实现这一点?

我找到了解决方案。。。由于主关系是AND,我必须创建一个新的关系树,如下所示:

$query->query_vars['meta_query'][] = array(
'relation' => 'OR',
array(
'key' => 'my_custom_key',
'value' => 'no',
'compare' => 'NOT EXISTS',
),
array(
'key' => 'my_custom_key',
'value' => 'no',
)
);  

相关内容

最新更新