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

标签 php wordpress

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

您可以将多个比较链接在一起,并使用 ORrelation 属性,其中任何一个都应返回 true。

关于php - 带有自定义字段参数的 WP_Query(复选框),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18213151/

相关文章:

html - 如何从 Twenty Twelve 主题中删除响应代码

php - 从所有自定义帖子类型中删除 _thumbnail_id

javascript - MM_swapImage OnMouseOver 在 IE 中不工作

php - Woocommerce 退款电子邮件

php - 转义字符串以在 preg_ 正则表达式中使用

PHP 和 Codeigniter - 如何检查模型是否存在和/或不抛出错误?

php - MySQL CSV 导入问题

javascript - 如何解决具有不同参数的子菜单的悬停?

php和mysql显示date_begin和date_end之间的每日收入

php - Zend 分页器变量