Kev
Kev

Reputation: 415

Wordpress: show future events based on custom field AND order by date

I have a custom content type (event), within that type I have a custom date field, with the name: 'date'. In my template I am running the WP_Query to return a list of events. I would like to only get events that are in the future (according to my custom 'date' field) and then order the list by that same field.

I have tried the following but it simply returns a list of all the 'events' in the system, regardless of date

    $today = date('d M, y');

    $args = array (
        'post_type'              => 'event',
        'meta_query'             => array(
            array(
                'key'       => 'date',
                'value'     => $today,
                'compare'   => '>',
                'type'      => 'CHAR',
            ),
        ),
        'meta_key'               => 'date',
        'orderby'                => 'meta_value_num',
        'order'                  => 'ASC'
    );

As a note: if I replace the type from 'CHAR' to 'DATE' I get no results returned...

Upvotes: 1

Views: 517

Answers (1)

svsdnb
svsdnb

Reputation: 154

Try this:

functions.php

function custom_unixtimesamp ( $post_id ) {
    if ( get_post_type( $post_id ) == 'events' ) {
    $startdate = get_post_meta($post_id, 'event_date_begins', true);

        if($startdate) {
            $dateparts = explode('/', $startdate);
            $newdate1 = strtotime(date('d.m.Y H:i:s', strtotime($dateparts[1].'/'.$dateparts[0].'/'.$dateparts[2])));
            update_post_meta($post_id, 'unixstartdate', $newdate1  );
        }
    }
}
add_action( 'save_post', 'custom_unixtimesamp', 100, 2);

then query

$today = time();    

    $args = array(
        'post_type' => 'events',
    'post_status' => 'publish',
    'posts_per_page' => '10',
    'meta_query' => array(
        array(
            'key' => 'unixstartdate',
            'compare' => '>=',
            'value' => $today,
            )
            ),
    'meta_key' => 'event_date_begins',
    'orderby' => 'meta_value',
    'order' => 'ASC',
    'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1 ),
);

Upvotes: 1

Related Questions