使用Get_Posts获取不存在自定义字段的帖子

时间:2021-12-03 作者:Basj

我想获取所有自定义字段hidden 不存在。这不起作用:

$postsForSitemap = get_posts(array(
    \'numberposts\' => -1, 
    \'orderby\' => \'modified\', 
    \'post_type\' => array(\'post\', \'page\'), 
    \'order\' => \'DESC\', 
    \'meta_key\' => \'hidden\', 
    \'meta_compare\' => \'!=\')
);
因为meta_compare 是关于meta_value, 不是钥匙。

我在文档中没有找到https://developer.wordpress.org/reference/classes/wp_query/#custom-field-post-meta-parameters 如何获取所有没有特定自定义字段的帖子。

如何做到这一点?

1 个回复
最合适的回答,由SO网友:Buttered_Toast 整理而成

你可以使用NOT EXISTS 作为comparem的值,如果相关,还可以检查空值

此代码仅检查以下情况hidden 元不存在

$postsForSitemap = get_posts([
    \'numberposts\'  => -1, 
    \'orderby\'      => \'modified\', 
    \'post_type\'    => [\'post\', \'page\'], 
    \'order\'        => \'DESC\', 
    \'meta_key\'     => \'hidden\', 
    \'meta_compare\' => \'NOT EXISTS\'
];
此检查为hidden meta不存在或没有值

$postsForSitemap = get_posts([
    \'numberposts\' => -1, 
    \'orderby\'     => \'modified\', 
    \'post_type\'   => [\'post\', \'page\'], 
    \'order\'       => \'DESC\', 
    \'meta_query\'  => [
        \'relation\' => \'OR\',
        [
            \'key\'     => \'hidden\',
            \'compare\' => \'NOT EXISTS\',
        ],
        [
            \'key\'   => \'hidden\',
            \'value\' => \'\'
        ]
    ]
];

相关推荐

如何在wp-Query中比较不同的时间戳以获取事件自定义帖子类型?

我有一个带有自定义元数据库的自定义帖子类型(as seen on wptheming.com) 并且希望进行查询以显示即将发生的事件,例如在侧边栏中,过去的日期被忽略。但我需要一个当前时间的值来和事件开始时间进行比较。现在我从current_time(\'mysql\') 看起来是这样的:2012-02-16 13:15:31元的开始时间如下所示:201108121100如何使这两个日期具有可比性?我可以在查询中执行吗?或者是否有其他解决方案?以下是我到目前为止的查询(值留空,时间戳回显):<?ph