diff --git a/includes/api.php b/includes/api.php index 0f86210..cffc2e9 100644 --- a/includes/api.php +++ b/includes/api.php @@ -138,6 +138,114 @@ function build_articles($request) } + +function build_revues($request) +{ + + // write_log($request->get_params()); + $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' => 'revues', + 'posts_per_page' => -1, + ); + + // 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'; + } + + + // Pour une revue donnée + // on scanne tous les articles pour voir si ils ont une thématique donnée + + // si non on fait rien + // si oui on ajoute la revue au tableau + write_log("################TEST ETIQUES: "); + write_log($etiquette); + + + // 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; + } + + $revues = new WP_Query($args); + + write_log("################TEST ARTICLES: "); + write_log($revues->posts); + + ob_start(); + if ($revues->have_posts()) : + while ($revues->have_posts()) : $revues->the_post(); + + get_template_part('template-parts/revues/card-revue', null, array( + 'date' => get_the_date(), + 'image' => get_the_post_thumbnail_url(), + 'link' => get_the_permalink(), + 'ID' => get_the_ID(), + 'ThumbnailFocalPosition' => safe_get_thumbnail_focal_point_css(), + )); + endwhile; + else : + echo '

Aucun article trouvé.

'; + endif; + wp_reset_postdata(); + + $html_template = ob_get_clean(); + + $response_data = array( + 'html_template' => $html_template, + 'post_count' => $revues->found_posts, + 'query_args' => $args, // Pour debug + ); + $response = new WP_REST_Response($response_data); + + $response->set_status(200); + + return $response; +} + // ################ FILTER REVUES ################ function build_revue_articles($request)