问题描述

这是我用来获取日期元数据比今天更新的事件帖子的代码片段:

    <?php
        query_posts( array(
        'post_type' => 'concerts',
        'meta_key' => 'numericdate',
        'posts_per_page' => -1,
        'orderby' => 'meta_value',
        'order' => 'ASC',
        'meta_query' => array(
            array(
                'key' => 'numericdate',
                'value' => date('dmY'),
                'compare' => '>=',
                'type' => 'date'
                 )
           )
    ) );
    if (have_posts()) : ?>

这没有返回结果。 “numericdate” 字段包含一个”ddmmyyyy” 字符串,所以我预计与”dmY” 今天日期值的比较将会起作用。我错了。或者上面的代码有一些错误。谢谢你的帮助 !

最佳解决方案

我有完全相同的问题,除了我使用 std 。帖子类型 (帖子) 和我的查询中的一个类别。除了排序顺序,一切都起作用。

$d = date("Y-m-d");
$args = array(
    'post_type'         => 'post',
    'category_name'     => 'events',
    'post_status'       => 'publish,draft,pending,future,private', // just for me
    'meta_key'          => 'event_start',
    'orderby'           => 'meta_value_num',
    'order'             => 'ASC',
    'posts_per_page'    => -1,
    'meta_query'        => array(
        array(
            'key' => 'event_start',
            'value' => $d,
            'type' => 'date',
            'compare' => '>'
        )
    )
);

但是我的帖子由 String-Comparison 排序。我做错了什么?

经过一点点的试验和错误,我发现,而不是’meta_value_num’ 我应该使用’meta_value’:

$d = date("Y-m-d");
$args = array(
    'post_type'             => 'post',
    'category_name'     => 'events',
    'post_status'           => 'publish,draft,pending,future,private',
    'meta_key'              => 'event_start',
    'orderby'               => 'meta_value',
    'order'                     => 'ASC',
    'posts_per_page'        => -1,
    'meta_query'            => array(
        array(
            'key' => 'event_start',
            'value' => $d,
            'type' => 'date',
            'compare' => '>'
        )
    )
);

次佳解决方案

对于什么是它的价值,使用 wordpress current_time()这种查询。

current_time('mysql')根据 MySQL 可接受的管理员设置提供服务器时间

第三种解决方案

我相信 MySQL 日期格式应该是 YYYY-MM-DD 。另外我认为 orderby 应该是 meta_value_num,否则这些值被视为字符串。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。