admin管理员组

文章数量:1289878

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 :

  • 06/01/2021
  • 08/21/2021
  • 08/31/2021
  • 09/06/2021
  • 07/30/2022
  • 10/31/2021
  • 11/31/2021
  • 12/31/2021
  • 01/31/2022
  • 03/10/2022

And then i do my query like this :

$args[1] = 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 :

  • 01/31/2022
  • 03/11/2022
  • 06/01/2021

date_available_from >= 07/19/2021 give me :

  • 07/30/2022
  • 08/31/2021
  • 09/06/2021
  • 10/01/2021
  • 10/31/2021
  • 11/30/2021
  • 12/31/2021

And my sort, is always by month (not by date)

How can i edit my code than let the filter and sort alright ?

Thanks

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 :

  • 06/01/2021
  • 08/21/2021
  • 08/31/2021
  • 09/06/2021
  • 07/30/2022
  • 10/31/2021
  • 11/31/2021
  • 12/31/2021
  • 01/31/2022
  • 03/10/2022

And then i do my query like this :

$args[1] = 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 :

  • 01/31/2022
  • 03/11/2022
  • 06/01/2021

date_available_from >= 07/19/2021 give me :

  • 07/30/2022
  • 08/31/2021
  • 09/06/2021
  • 10/01/2021
  • 10/31/2021
  • 11/30/2021
  • 12/31/2021

And my sort, is always by month (not by date)

How can i edit my code than let the filter and sort alright ?

Thanks

Share Improve this question asked Jul 19, 2021 at 17:33 djoodjoo 1577 bronze badges 0
Add a comment  | 

1 Answer 1

Reset to default 0

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 everybody.

本文标签: wp queryWPQuery Date and ACF