我正在尝试设置一个自定义查询,该查询仅返回不具有自定义元字段复选框的帖子。复选框元字段ID为position-filled
。
这是我的代码:
$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);
但是,这不会返回任何帖子(我已确定有帖子没有复选框。
知道我做错了吗?
答案 0 :(得分:4)
在向现有帖子/页面添加自定义字段时,我遇到了类似的问题,我需要搜索“未选中”或“未选中”字段。
归结为查询实际这样的事实,“给我填充元数据(位置已填充) 填充的帖子,但不填充值为'on'“。
如果您在未选中复选框的情况下重新保存帖子,是否有效?
如果是这样,您也可以尝试使用'compare'
的{{1}}值。虽然我相信如果您使用'NOT EXISTS'
然后有人在未选中复选框的情况下保存较旧的帖子,则将存在(带有空白值)。
<强> [编辑] 强>
我忘了提到您可以构建一个 情况为真的查询(NOT EXISTS
或它确实存在,但值为空/未选中)。
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'
)
)
);
的{{1}}属性,其中一个应该返回true。