Finally got it. This code in functions.php:
function set_order_by_last_date($query){
$query->set( 'orderby', 'eventstart');
$query->set( 'order', 'DESC' );
$query->get_posts();
if ($query->have_posts()){
if ( eo_get_the_end('Ymd',$query->posts[0]->ID,$query->posts[0]->occurrence_id) > date('Ymd') ){
$query->set( 'event_end_after', 'today' );
$query->set( 'orderby', 'eventstart');
$query->set( 'order', 'ASC' );
} else {
$query->set( 'event_end_before', 'today' );
$query->set( 'orderby', 'eventstart');
$query->set( 'order', 'DESC' );
}
}
return $query->query_vars;
}
Called from the template file with:
<?php query_posts(set_order_by_last_date(clone $wp_query));?>
The vars and eo_ functions are from the excellent event organiser plug-in. Thanks @jack-johansson for the pointers.
Related Posts:
- When to use WP_query(), query_posts() and pre_get_posts
- Should I use Pre Get Posts or WP_Query
- WP_Query orderby post__in remains ineffective in the Loop [closed]
- What is “main query”? [duplicate]
- Reduce or prevent calling of update_meta_cache
- How to add taxonomy filter on the query fly?
- Changing the meta_query of the main query based on custom query_vars and using pre_get_posts
- Order Search Results Page by meta_value If no Value Return Remaining Results
- pre_get_posts with get_posts
- How-to exclude terms from the main query the most performant way?
- Slow SQL_CALC_FOUND_ROWS Query
- RSS feed with specific keyword
- Multiple orderby parameters in pre_get_posts() action
- SQL Statement generated by WP_Query not producing expected results
- Sorting Posts by custom field
- Query with pre_get_posts to get pagination
- Recommended way to drop a pending query (in pre_get_posts)?
- Single page theme that uses pages for the content
- If orderby parameter using pre_get_posts is the same for multiple posts what fallback does the query use?
- Can not switch the queried post in pre_get_posts hook
- How to target the default Recent Posts and Recent Comments widgets with pre_get_posts?
- How to sort posts in admin by titles with dd.mm.yyyy format?
- WP_Tax_Query with post_tag not working
- Splitting the main query in multiple loops with query_posts and/or pre_get_posts?
- How to Modify Taxonomy Archive Page with Search Parameter?
- Searching through different categories on different pages code is not working
- How to display future posts – modified query still yields 404
- pre_get_posts filter meta_query without conflicting existing meta_query
- Including only current user’s posts in search
- When querying a combination of posts and other meta fields, is there a better solution than directly modifying the WHERE value?
- How to change posts order on Category and Tag archives?
- Formulate a url to show posts with both taxonomy terms
- My Main Query Modification is Messing up my dynamic main – why?
- pre_get_posts Remove tax_query Completely
- Adding a parameter to the default query
- Using WP_Query in “parse_query” or “pre_get_post” in Posts2Posts
- Single meta_query query using OR instead of AND in request’s WHERE statement
- How to choose between hooking into per_get_posts or into parse_query
- Store sticky post’s ids in a transient
- Show Sticky Post at the top but do not show again in the loop?
- Using meta_query with multiple keys and compare values
- Can I set my WP_Query to be a Main Query?
- Remove category from query (show all posts in archive.php) pre_get_posts()
- Show scheduled posts in main loop but not in WP_Query?
- hide custom post types with specific meta key ON admin backend
- WP_Query ignoring tax_query when is_singular
- Applying posts_clauses filter to specific queries only
- Help ordering Post loop by two meta values
- Filtering out child category posts from parent category archive not working
- Order ascending is ignored in meta query?
- New WP_Query calls Pre_get_posts filter twice
- How Can I Change The Tax Query For The Main Loop For Taxonomy Archives?
- Woocommerce – exclude only older out-of-stock items
- WP Query – order posts by meta field first and then order the rest
- pre_get_posts – Trying to get property of non-object warning
- queried_object using pre_get_posts gets notices and warning
- date_query in pre_get_posts out of memory
- How I can change the condition or compare operator for WP_Query in pre_get_posts
- WP_Query – How to get all posts of specific days of week by custom field date?
- Multiple meta_key ordering with pre_get_posts
- Sorting search results with custom dropdown
- pre_get_posts – editing query, tax_query
- Child pages not affected by orderby
- How to apply pre_get_posts to a custom query?
- tax_query in pre_get_posts
- WP_Query, Paginate by Custom Field
- Elementor posts custom query based on tag [closed]
- Exclude post with taxonomy and from the terms (taxonomy & tag) posts count
- `offset` WP_Query argument dont work via `pre_get_posts`
- Block internal search queries with pre_get_posts and regex rules
- is_user_logged_in not working from WP-API (wp-json)
- Search Exact on WordPress – Relevannsi Solution Not Working
- Excluding posts from search results page with meta query not working
- pre_get_posts pagination not working
- meta_query is overriding default search
- pre_user_query vs pre_get_posts
- Can I alter the main loop to ‘orderby’ a custom callback?
- How can I re-query post_type and rewrite the url?
- Pre get posts sort by meta key returns no results if meta key does not exist
- Pre_get_posts only show posts by administrator roles
- Modify a query with no results in pre_get_posts
- How order by works?
- Order posts by title and custom field value?
- Custom Order Current Query: By Meta Key and Category
- Limit default Search query to post_title
- why doesn’t this pre_get_posts code work?
- pre_get_posts with WP_Query to prevent posts from specific tags
- Modify query to exclude certain ids and certain parents and its corresponding children
- Adding a Theme Customizer Control for Posts_Per_Page
- wp_query – Modify $query to include duplicate content
- Order posts by custom column using pre_get_posts
- pre_get_posts or $where, which one to use?
- Filter WP_Query output before it is accessed (pre_get_posts)?
- Sort posts in dashboard using custom field; also include posts where field isn’t set
- pre_get_posts redirecting
- Avoiding page loop
- Custom post types loop on a page template
- Pre_get_post on CPT archive page
- Search query alteration not working for meta values
- How to put posts with some taxonomy on top of others in `pre_get_posts`