'GET', 'callback' => 'build_posts', 'permission_callback' => '__return_true', )); }); // ################ FILTER POSTS ################ function build_posts($request) { $post_type = esc_html($request->get_param('post_type')); $etiquette = esc_html($request->get_param('etiquette')); $auteur = esc_html($request->get_param('auteur')); $sort_by = esc_html($request->get_param('sort_by')); $recherche = esc_html($request->get_param('recherche')); // Construire les arguments de la query WordPress $args = array( 'post_type' => $post_type, 'posts_per_page' => -1, ); write_log("##########params"); write_log(array( 'post_type' => $post_type, 'etiquette' => $etiquette, 'auteur' => $auteur, 'sort_by' => $sort_by, 'recherche' => $recherche, )); // Gestion du tri switch ($sort_by) { case 'date_desc': $args['orderby'] = 'date'; $args['order'] = 'DESC'; break; case 'date_asc': $args['orderby'] = 'date'; $args['order'] = 'ASC'; break; case 'title_asc': $args['orderby'] = 'title'; $args['order'] = 'ASC'; break; default: $args['orderby'] = 'date'; $args['order'] = 'DESC'; } // Filtre par étiquette (taxonomie) if (!empty($etiquette) && $etiquette != '1') { $args['tax_query'] = array( array( 'taxonomy' => 'etiquettes', 'field' => 'slug', 'terms' => $etiquette, ), ); } // Filtre par auteur if (!empty($auteur) && $auteur != '1') { $args['meta_query'] = array( array( 'key' => 'authors', // Ajustez selon votre structure 'value' => $auteur, 'compare' => 'LIKE' ) ); } // Recherche par mot-clé if (!empty($recherche)) { $args['s'] = $recherche; } $posts_query = new WP_Query($args); write_log($posts_query->posts); ob_start(); if ($posts_query->have_posts()) : while ($posts_query->have_posts()) : $posts_query->the_post(); get_template_part('template-parts/components/cards/post-card', null, array( 'ID' => get_the_ID(), )); endwhile; else : echo '
Aucun article trouvé.
'; endif; wp_reset_postdata(); $html_template = ob_get_clean(); $response_data = array( 'html_template' => $html_template, 'post_count' => $posts_query->found_posts, 'query_args' => $args, // Pour debug ); $response = new WP_REST_Response($response_data); $response->set_status(200); return $response; }