我正在尝试设置一个自定义查询,该查询仅返回没有已选中自定义元字段复选框的帖子。复选框元字段 ID 是位置填充
。
这是我的代码:
$args = array (
'post_type' => 'jobs',
'posts_per_page' => 4,
'post__not_in' => array(get_the_id()),
'meta_query' => array(
array(
'key' => 'position-filled',
'value' => 'on', // also tried passing null and removing 'compare'
'compare' => '!=' // also tried 'NOT LIKE'
)
),
);
$customQuery = new WP_Query($args);
但是,这不会返回任何帖子(我已确定有些帖子没有选中了复选框。
知道我做错了什么吗?
最佳答案
在将自定义字段添加到需要搜索“未选中”或“未选择”字段的现有帖子/页面时,我遇到了类似的问题。
归结为这样一个事实:查询实际上说的是,“给我填充元键(位置填充)的帖子,但没有填充值为“on”。
如果您在取消选中该复选框的情况下重新保存帖子,这是否有效?
如果是这样,您还可以尝试使用'NOT EXISTS'
的'compare'
值。尽管我相信如果您使用NOT EXISTS
,然后有人在没有选中该复选框的情况下保存旧帖子,那么它将会存在(具有空白值)。
[编辑]
我忘了提及,您可以在以下任一情况下构建查询(不存在
或它确实存在,但值为空/未选中)。
$args = array(
'post_type' => 'jobs',
'posts_per_page' => 4,
'post__not_in' => array(get_the_id()),
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'position-filled',
'value' => 'on',
'compare' => '!='
),
array(
'key' => 'position-filled',
'value' => '',
'compare' => 'NOT EXISTS'
)
)
);
您可以将多个比较链接在一起,并使用 OR
的 relation
属性,其中任何一个都应返回 true。
关于php - 带有自定义字段参数的 WP_Query(复选框),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18213151/