查询具有“未设置”元值的帖子

时间:2019-09-18 作者:GuitarExtended

我想根据自定义字段查询自定义帖子,比如instrument. 我需要能够只查询那些没有设置自定义字段的帖子(即不存在元数据的帖子)。有没有办法做到这一点meta_query ?以下是查询代码:

$args = array(
    \'post_type\' => \'my_custom_post_type\',
    \'nopaging\' => true
);

$args[\'meta_query\'] = array(
                            array(
                                \'key\'       => \'instrument\',
                                // when value is not even set.
                            )
                        );

}

$the_query = new WP_Query( $args );

2 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

documented, 您可以设置compare 元查询的属性NOT EXISTS:

$args[\'meta_query\'] = array(
    array(
        \'key\'     => \'instrument\',
        \'compare\' => \'NOT EXISTS\',
    ),
);

SO网友:freejack

元查询可以接受一个名为“compare”的参数,该参数可以设置为“NOT EXISTS”。

因此,您的元查询应该如下所示:

$args[\'meta_query\'] = array(
    array(
        \'key\'       => \'instrument\',
        \'compare\'   => \'NOT EXISTS\'
    )
);
meta\\u查询的所有参数列表可在codex中找到:https://codex.wordpress.org/Class_Reference/WP_Meta_Query

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post