I have a Page of Posts, each post has a Custom Field "expired" which contains a date in the format YYYY-MM-DD which is used to order the posts. This date is used for a script that tells the visitor if an offer has either expired or is valid for X days more.
My array is as follows:
$postid = get_the_ID(); $meta1 = get_post_meta($postid, 'shop', true); $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array( 'post_type' => 'post', 'meta_query' => array( array( 'key' => 'shop', 'value' => $meta1 ) ), 'paged' => $paged, 'posts_per_page' => '4', 'meta_key' => 'expired', 'orderby' => 'meta_value', 'order' => 'ASC' ); $query = new WP_Query( $args );
This orders the posts using the meta_value of "expired", earliest date at the top.
When the "expired" meta_value date is before 'TODAY' the post script will show "EXPIRED"
When the "expired" meta_value date is after 'TODAY' the script will show "Expires in X days"
How posts currently display:
When a post 'expires' it currently stays at the top of the post list.
Post 1: Expired Post 2: Expired Post 3: Expires in 3 days Post 4: Expires in 4 days Post 5: Expires in 6 days
Instead, I'd like to automatically order it thus: (note Post # for comparison to above)
Post 3: Expires in 3 days Post 4: Expires in 4 days Post 5: Expires in 6 days Post 2: Expired Post 1: Expired
How can I create a custom order where once a post expires (ie. it's 'expired' date is before Today's date) it is put to the back of the post list yet still above older expired posts?