admin管理员组

文章数量:1327945

I'm struggling with this. I a have list of date (not fixed, I can have as many date as I want) made thanks to the ACF Repeater. In my query, I want to filter by date.

But, I have to hide some post if the date choosen is not between my 2 date fields (evenement_date_start and evenement_date_end). This is an example of my date list.

So if I choose between 01/10/2020 and 20/10/2020, the event should not show up. But right now, it does and I can't figure out why.

This is my query args, my date and variable have this format "Ymd" :

$args[] =
['relation' => 'OR',
    ['relation' => 'AND',
        [
            "key" => "evenements_liste_dates_AAA_evenement_date_start",
            "compare" => "<=",
            "type" => 'DATE',
            "value" => $startDate,
        ],
        [
            "key" => "evenements_liste_dates_AAA_evenement_date_end",
            "compare" => ">=",
            "type" => 'DATE',
            "value" => $endDate,
        ]
    ],
    ['relation' => 'OR',
        [
            "key" => "evenements_liste_dates_AAA_evenement_date_start",
            "compare" => "BETWEEN",
            "type" => 'DATE',
            "value" => [$startDate, $endDate],
        ],
        [
            "key" => "evenements_liste_dates_AAA_evenement_date_end",
            "compare" => "BETWEEN",
            "type" => 'DATE',
            "value" => [$startDate, $endDate],
        ]
    ],
];

And my post where rewriting

add_filter('posts_where', function ($query, WP_Query $wp_query) {
    if(!is_admin() && $wp_query->query_vars['post_type'] == "evenement" && !$wp_query->is_main_query()) {
        $query = str_replace("meta_key = 'evenements_liste_dates_AAA_evenement_date_start'", "meta_key LIKE 'evenements_liste_dates_%_evenement_date_start'", $query);
        $query = str_replace("meta_key = 'evenements_liste_dates_AAA_evenement_date_end'", "meta_key LIKE 'evenements_liste_dates_%_evenement_date_end'", $query);
    }
    return $query;
}, 10, 2);

本文标签: phpQuery on a repeater date (acf)