function handle_festival_filter() { // ... (le début de la fonction avec la récupération des filtres ne change pas) $region = isset($_POST['region']) ? stripslashes(sanitize_text_field($_POST['region'])) : ''; $department_code = isset($_POST['departement']) ? sanitize_text_field($_POST['departement']) : ''; $month = isset($_POST['mois']) ? intval($_POST['mois']) : ''; $args = array( 'post_type' => 'festival', 'posts_per_page' => -1, 'meta_query' => array('relation' => 'AND'), 'orderby' => 'meta_value', 'meta_key' => 'date_debut', 'order' => 'ASC' ); // Si aucun filtre n'est appliqué, on affiche les festivals à venir if (empty($region) && empty($department_code) && empty($month)) { $args['meta_query'][] = array( 'key' => 'date_fin', 'value' => date('Ymd'), 'compare' => '>=', 'type' => 'DATE' ); } // ... (le reste de la logique de filtrage ne change pas) if (!empty($region)) { $args['meta_query'][] = array( 'key' => 'region', 'value' => $region, 'compare' => 'LIKE' ); } if (!empty($department_code)) { $args['meta_query'][] = array( 'key' => 'codedep', 'value' => $department_code, 'compare' => '=' ); } if (!empty($month)) { $year = date('Y'); $start_of_month = date('Ymd', mktime(0, 0, 0, $month, 1, $year)); $end_of_month = date('Ymt', mktime(0, 0, 0, $month, 1, $year)); $args['meta_query'][] = array('relation' => 'OR', array('key' => 'date_debut', 'value' => array($start_of_month, $end_of_month), 'compare' => 'BETWEEN', 'type' => 'DATE'), array('key' => 'date_fin', 'value' => array($start_of_month, $end_of_month), 'compare' => 'BETWEEN', 'type' => 'DATE'), array('relation' => 'AND', array('key' => 'date_debut', 'value' => $start_of_month, 'compare' => '<=', 'type' => 'DATE'), array('key' => 'date_fin', 'value' => $end_of_month, 'compare' => '>=', 'type' => 'DATE') ) ); } $query = new WP_Query($args); $festivals_by_month = []; if ($query->have_posts()) { while ($query->have_posts()) { $query->the_post(); $date_debut_obj = DateTime::createFromFormat('Ymd', get_field('date_debut')); if ($date_debut_obj) { // On groupe les festivals par mois/année $month_year = $date_debut_obj->format('F Y'); if (!isset($festivals_by_month[$month_year])) { $festivals_by_month[$month_year] = []; } $festivals_by_month[$month_year][] = get_post(); } } } wp_reset_postdata(); if (!empty($festivals_by_month)) { // On utilise les classes CSS de votre agenda actuel echo '
Aucun festival ne correspond à votre recherche.
'; } wp_die(); }