2个日期之间的WordPress Meta-Query

时间:2014-05-15 13:38:32

标签: php mysql wordpress date

我目前对WordPress的元查询有一个小问题。初步情况:

具有2个元字段的自定义帖子类型(offer_start-date,offer_end-date)CPT旨在作为要约,应在指定的时间段内显示(在开始日期和结束日期之间)。此处的日期格式为德语格式DD.MM.YYYY。为此,我使用目前的以下查询:

$args = array(
    'post_type'         => 'offer',
    'posts_per_page'    => -1,
    'post_status'       => 'publish',
    'order'             => 'DESC',
    'meta_query'        => array(
        array(
            'key'       => 'offer_start-date',
            'value'     => date( 'd.m.Y', time() ),
            'type'      => 'numeric',
            'compare'   => '<='
        ),
        array(
            'key'       => 'offer_end-date',
            'value'     => date( 'd.m.Y', time() ),
            'type'      => 'numeric',
            'compare'   => '>='
        )
    )
);
new WP_Query( $args );

不幸的是,查询不会产生可靠的结果。我甚至不能说100%为什么。有些日子会出现所有优惠,其他日子则没有优惠。

我也试图找出食典中问题的原因,但似乎我是一个强大的傻瓜。

2 个答案:

答案 0 :(得分:2)

如果您需要在两者之间使用,请使用:

'meta_query' => array(
        array(
            'key' => 'event_date',
            'value' => array(date('d/m/Y'), date('d/m/Y', strtotime('28 days'))),
            'compare' => 'BETWEEN',
            'type' => 'DATE'
        ),
    )

答案 1 :(得分:2)

以下解决方案对某人来说可能很方便

$args = array(
'cat' => $cat_ID,
'meta_query' => array(
    'relation' => 'AND',
    array(
        'key'     => 'date_from',
        'value'   => date("Y-m-d H:i:s"),
        'compare' => '<=',
        'type'    => 'DATE'
    ),
    array(
        'key'     => 'date_to',
        'value'   => date("Y-m-d H:i:s"),
        'compare' => '>=',
        'type'    => 'DATE'
    )
),
'orderby' => 'date',
'order' => 'DESC'
);