自定义元字段的日期查询

时间:2015-05-07 作者:glarkou

我想使用类似于以下date\\u查询的内容,但我想使用一些自定义元字段,而不是现有的post列。例如,而不是post_date_gmt 我想查询元密钥date 这是我创造的。

换句话说,我希望能够过滤custom_post_types 使用一些元字段,例如。starting_dateend_date 在管理界面中查看它们。我已经截获了主管道WP_Query 但我不知道如何过滤一个元字段而不是一个post列。

我可以这样做吗?还是创建元查询更好?

// Any posts made over a year ago
// but modified in the past month
$some_posts = new WP_Query( array(
    \'date_query\' => array(
        array(
            \'column\' => \'post_date_gmt\',
            \'before\' => \'1 year ago\',
        ),
        array(
            \'column\' => \'post_modified_gmt\',
            \'after\'  => \'1 month ago\',
        )
    ),
    \'posts_per_page\' => -1,
) );

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

您需要使用meta_query 查询自定义字段。如果要在自定义字段中存储日期和时间以进行排序或比较,则需要将其存储为yyyy-mm-dd h:m:s 或作为unix timestamp.

如果有两个自定义字段startend 你需要在cetain开始日期和结束日期之间获得帖子,你可以尝试以下方法

$args = [
    \'meta_query\' => [
        [
            \'key\' => \'start\',
            \'value\' => \'2014-05-14\'
            \'compare\' => \'>=\',
            \'type\' => \'DATE\'
        ],
        [
            \'key\' => \'end\',
            \'value\' => \'2015-05-07\',
            \'compare\' => \'<=\',
            \'type\' => \'DATE\'
        ],
    ],
];

$q = new WP_Query( $args );
几点注意事项:上面需要PHP 5.4+,因为它使用了新的短数组语法

上述内容完全未经测试,可能有问题。我正在从移动设备发帖:-)

阅读我上面提供的链接

由于一些有趣的未知原因,我错过了你评论的最后一部分。

此外,我可以在元查询中使用date\\u查询吗

答案是否定的,但您可以在同一个查询中使用日期和元查询,如下所示

$args = [
    \'date_query\' => [[ /* Your date related stuff */]],
    \'meta_query\' => [[ /* Your custom field related stuff */ ]],
];
$q = new WP_Query( $args );

结束

相关推荐

使用DATE_QUERY获取下一个事件

我创建了一个名为event的CPT,并希望根据它的发布日期进行查询以显示下一个将来的事件。这是WP_Query 参数:$today = getdate(); $args = array( \'post_status\' => array(\'publish\', \'future\'), \'post_type\' => \'event\', \'orderby\' => \'date\', \'order\' =&