使用meta来匹配WP_Query中的日期

时间:2014-11-10 18:19:16

标签: php wordpress advanced-custom-fields wp-query

我发布了一些名为“event_end_date”的自定义文章。我正在使用高级自定义字段。如何获得end_date比今天更早的帖子?我正在尝试这个,但无法通过。

$args = array(
        'cat'       => '6, -33',
        'numberposts'   => -1,
        'post_type'     => 'post',
        'meta_query'    => array(
            array(
                'key' => 'event_end_date',
                'value' => date('y-m-d'),
                'type' => 'DATE',
                'compare' => '>'
            )
        )
    );

//get results
$the_query = new WP_Query( $args );

在这里,我想要那些类别为“6”并且没有“33”类别的帖子。在后端,字段 - 'event_end_date'包含以下内容:

Field Type: Date Picker
Display format: 10/11/2014
Return format: 20141110

2 个答案:

答案 0 :(得分:0)

我认为,如果您过于仔细地查看存储在该实际自定义/元字段中的数据,您会发现它存储为unix时间戳,而不是以返回或显示格式存储,因此,你的问题是你的格式不匹配。

您可以使用U code for unix timestampdate('U')代替date('y-m-d')来解决这一差异。

在这种情况下,您的代码将如下所示:

$args = array(
    'cat'       => '6,-33',
    'numberposts'   => -1,
    'post_type'     => 'post',
    'meta_query'    => array(
        array(
            'key' => 'event_end_date',
            'value' => date('U'),
            'type' => 'DATE',
            'compare' => '>'
        )
    )
);

//get results
$the_query = new WP_Query( $args );

答案 1 :(得分:0)

使用日期('Y-m-d',time())解决了我的问题。

$args = array(
        'category__and'     => array(6),
        'category__not_in'  => array(33),
        'numberposts'       => -1,
        'post_type'         => 'post',
        'post_status'       => 'publish',
        'meta_query'        => array(
            array(
                'key'       => 'event_end_date',
                'value'     => date('Y-m-d', time()),
                'type'      => 'DATE',
                'compare'   => '<'
            )
        )
    );