I’m creating a Query, and i need to filter by an ACF date field. In the database the value (in wp_post_meta table) is like this : MM/DD/YYYY
I have few rooms with, as a value in the field date_available_from, this :
And then i do my query like this :
$args = array( 'posts_per_page' => -1, 'tax_query' => array( array( 'taxonomy' => 'cities', 'field' => 'slug', 'terms' => $term_slug, ), ), 'post_type' => 'room', 'meta_query' => array( 'relation' => 'AND', 'date_available_clause' => array( 'key' => 'date_available_from', 'value' => $date_from_format_search, 'compare' => '<=', ), ), 'orderby' => array( 'date_available_clause' => 'ASC', ) );
Problem 1 : The clause doesn’t works
ex : date_available_from <= 07/19/2021 give me :
date_available_from >= 07/19/2021 give me :
And my sort, is always by month (not by date)
How can i edit my code than let the filter and sort alright ?
I think the problem is that ACF put the format “MM/DD/YYYY” in database. Is there a way to change it ?
So, at the end of all i followed a bit of all the advises i found online.
First, I changed the value of my fields to make sure in database is like YYYYMMMDD. The problem i had was, that the field was filled up through API and ACF could not format the date at the good format in database. I have to changed the format of the date that i send through the API. Normal people using the backend to fill up the field date would never have this problem.
Second, i add a line in my code
‘date_disponible_clause’ => array(
‘key’ => ‘date_available_from’,
‘value’ => $date_from_format_search,
‘compare’ => ‘<=’,
‘type’ => ‘DATE’ // This line
Now it’s working very well. Thanks.
You must be logged in to reply to this topic.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
© 2022 Advanced Custom Fields.