-
vburdyko
Hi there,
I have a custom post type called Events, and each Single Event has a custom field called event_date. How can I use a query loop to display a list of events, excluding those events where event_date < current date (i.e., the event has already passed)? Thank you! -
Hi there,
it would require some PHP to write your own query args using the GB
generateblocks_query_loop_args
hook.
See here fore some examples:https://docs.generateblocks.com/article/order-query-loop-by-custom-field/
For your specific needs you would do something like this:
add_filter( 'generateblocks_query_loop_args', function( $query_args, $attributes ) { // apply filter if loop has class: order-by-priority if ( ! is_admin() && ! empty( $attributes['className'] ) && strpos( $attributes['className'], 'current-events' ) !== false ) { $new_query_args = array( 'meta_query' => array( array( 'key' => 'event_date', // Assuming 'event_date' is your custom field name 'value' => date( 'Y-m-d' ), 'compare' => '>=', 'type' => 'DATE', ), ), ); // Merge new query arguments with existing ones $query_args = array_merge( $query_args, $new_query_args ); } return $query_args; }, 10, 2 );
Note here:
'current-events' ) !== false )
is where i set the class ofcurrent-events
which is the class you use in Step 1 of the aboce doc.And here:
'key' => 'event_date', // Assuming 'event_date' is your custom field name
you define the custom field name. -
vburdyko
I did everything as you suggested, but now the query loop is empty. I thought the issue might be with the output format of the custom field “event_date”, so I tried changing it to “Y-m-d”, but it didn’t help. I would appreciate it if you could take a look at the site. Thank you.
-
Ah damnit… i updated the code above ( Where i forgot to merge the args back in ).
Give that a try -
vburdyko
Perfect, thank you so much!
-
You’re welcome
- You must be logged in to reply to this topic.