WordPress Meta-Query between 2 dates

11,836

Solution 1

If you need tu use between just use like that:

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

Solution 2

This below solution may be handy to someone

$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'
);
Share:
11,836
Admin
Author by

Admin

Updated on July 24, 2022

Comments

  • Admin
    Admin almost 2 years

    I have currently a small problem understanding with meta-queries by WordPress. Initial situation:

    A Custom Post Type with 2 meta-Fields (offer_start-date, offer_end-date) The CPT is intended as an offer, which should be displayed in the specified time period (between start-date and end-date) . The date here is formatted in german format DD.MM.YYYY. For that I use currently following query:

    $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 );
    

    Unfortunately, the query does not yield reliable results. I can not even say 100% why. On some days all offers appear, on other days there are no offers.

    I have also tried to find out the cause of the problem in the Codex, but it seems I am a strong blockhead.