带自定义字段参数的WP_Query(复选框)

时间:2013-08-13 15:25:01

标签: php wordpress

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

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

知道我做错了吗?

1 个答案:

答案 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。