Display custom post types with custom date field value (before today) & order by custom date field

I’m trying to display custom post types with custom date field value being before today. It works OK for showing posts before today, but the order is only based on post date. I want to have the result ordered by meta_key.

I tried the following code and I don’t understand why it doesn’t work:

query_posts( array(
  'post_type'    => 'soiree',
  'orderby'      => 'meta_value',
    'meta_key'   => 'date_de_concert',
    'meta_query' => array(
        array(
           'key'            => 'date_de_concert',
           'posts_per_page' => '-1',
           'value'          => date( 'Y-m-d' ),
           'compare'        => '<',
           'type'           => 'DATE',
           'orderby'        => 'value',
           'order'          => 'DESC',
        )
    )
) );

1 Answer
1

I prefer to use WP_Query (for more info read “When should you use WP_Query vs query_posts() vs get_posts()?”), try this way:

$args = array(
  'post_type'      => 'soiree',
  'post_status'    => 'publish',
  'posts_per_page' => -1,
  'orderby'        => 'date_de_concert',
  // you don't need 'meta_key' => 'date_de_concert' when using meta_query
  //'meta_key'     => 'date_de_concert',
  'order'          => 'DESC',
  'meta_query'     => array(
                        array(
                          'key'     => 'date_de_concert',
                          'value'   => strtotime( 'today' ),
                          'compare' => '<'
                        )
                      )
);

$concert_query = new WP_Query( $args );

if ( $concert_query->have_posts() ) : while ( $concert_query->have_posts() ) : $concert_query->the_post();

Leave a Comment