I have a meta field (defined by the ACF plugin), with key event_date that stores a “date” in the post_meta table in the form: 20240515 (YYYYMMdd).
I’d like to use a shortcode such as the following to pull all posts with event_date between two dates:
[display-posts meta_key="event_date" meta_date_value_after="2024-01-01" meta_date_value_before="2024-06-01"]
To do this, I think I need to do something similar to the various event calendar filter examples, so I’ve got a skeleton filter that looks like this:
function atp_dps_event_date_between ( $args, $atts ) {
// Ensure that all three parameters are in use and that meta_key is 'event_date';
// else return the $args (no modifications necessary)
if( ! ( isset( $atts['meta_key'] ) && $atts['meta_key'] == 'event_date'
&& isset( $atts['meta_date_value_after'] )
&& isset( $atts['meta_date_value_before'] ) ) )
return $args;
// what goes here?
return $args;
}
add_filter( 'display_posts_shortcode_args', 'atp_dps_event_date_between', 10, 2 );My problem, obviously, is that I don’t know how to build up the meta query itself, as I’m not quite sure how to do the date/string comparison, as well as the “double” query to handle before/after. It would seem to me to be something along these lines for a “after,” but then I don’t know how to add the “before.”
$meta_query = array(
array(
'key' => 'event_date',
'value' => $atts['meta_date_value_after'],
'compare' => '>=',
)
);I’m going to work on this a bit more on my end, hopefully finding a solution that I can post here for others to use. But, if anyone can hop in whit a solution, that’d be awesome.
