2

我正在尝试设置一个自定义查询,该查询仅返回选中自定义元字段复选框的帖子。复选框元字段 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);

但是,这不会返回任何帖子(我已经确定有没有选中复选框的帖子。

知道我做错了什么吗?

4

1 回答 1

4

在将自定义字段添加到需要搜索“未选中”或“未选中”字段的现有帖子/页面时,我遇到了类似的问题。

归结为这样一个事实,即查询实际上是在说,“给我帖子,其中填充了元键(位置填充)但没有填充 'on' 值”。

如果您在未选中复选框的情况下重新保存帖子,它会起作用吗?

如果是这样,您也可以尝试使用 的'compare''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'
        )
    )
);

您可以将多个比较链接在一起并使用 的relation属性OR,任何一个都应该返回 true。

于 2013-08-13T15:32:45.747 回答