Compare commits
4 Commits
5de70522d6
...
d6ac561bfd
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d6ac561bfd | ||
|
|
67049a6ebe | ||
|
|
c0eb08661d | ||
|
|
f8b804e991 |
108
includes/api.php
108
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 '<p>Aucun article trouvé.</p>';
|
||||||
|
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 ################
|
// ################ FILTER REVUES ################
|
||||||
|
|
||||||
function build_revue_articles($request)
|
function build_revue_articles($request)
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ export default function filterArticlesInit() {
|
||||||
if (!toolbar) return;
|
if (!toolbar) return;
|
||||||
|
|
||||||
const postGridToolbarActions = toolbar.querySelector('.post-grid__toolbar-actions');
|
const postGridToolbarActions = toolbar.querySelector('.post-grid__toolbar-actions');
|
||||||
|
const currentPostType = postGridToolbarActions?.getAttribute('data-post-type') as string;
|
||||||
const etiquettesSelect = toolbar.querySelector('select[name="etiquettes"]') as HTMLSelectElement;
|
const etiquettesSelect = toolbar.querySelector('select[name="etiquettes"]') as HTMLSelectElement;
|
||||||
const auteursSelect = toolbar.querySelector('select[name="auteurs"]') as HTMLSelectElement;
|
const auteursSelect = toolbar.querySelector('select[name="auteurs"]') as HTMLSelectElement;
|
||||||
const sortBySelect = toolbar.querySelector('select[name="sort_by"]') as HTMLSelectElement;
|
const sortBySelect = toolbar.querySelector('select[name="sort_by"]') as HTMLSelectElement;
|
||||||
|
|
@ -16,7 +17,7 @@ export default function filterArticlesInit() {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await fetch(
|
const response = await fetch(
|
||||||
`/wp-json/dynamiques-datas/v1/build/articles?etiquette=${etiquetteValue}&auteur=${auteurValue}&sort_by=${sortByValue}&recherche=${rechercheValue}`
|
`/wp-json/dynamiques-datas/v1/build/${currentPostType}?etiquette=${etiquetteValue}&auteur=${auteurValue}&sort_by=${sortByValue}&recherche=${rechercheValue}`
|
||||||
);
|
);
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
console.log(data);
|
console.log(data);
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ $thematiques = get_terms(array(
|
||||||
<div class="search-by__buttons" data-filter="thematique">
|
<div class="search-by__buttons" data-filter="thematique">
|
||||||
<button data-filter="thematique" aria-selected="true">Thématique</button>
|
<button data-filter="thematique" aria-selected="true">Thématique</button>
|
||||||
<button data-filter="auteur" aria-selected="false">Auteur·e</button>
|
<button data-filter="auteur" aria-selected="false">Auteur·e</button>
|
||||||
<button data-filter="occurence" aria-selected="false">Occurence Textuelle</button>
|
<button data-filter="occurence" aria-selected="false">Mot clé</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -19,43 +19,58 @@ $thematiques = get_terms(array(
|
||||||
<div class="content-section__inner">
|
<div class="content-section__inner">
|
||||||
|
|
||||||
<div class="post-grid__toolbar">
|
<div class="post-grid__toolbar">
|
||||||
|
|
||||||
|
<div class="search-by">
|
||||||
|
<p class="search-by__label">Filtrer par</p>
|
||||||
|
<div class="search-by__buttons" data-filter="thematique">
|
||||||
|
<button data-filter="thematique" aria-selected="true">Thématique</button>
|
||||||
|
|
||||||
|
<button data-filter="occurence" aria-selected="false">Mot clé</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<select name="sort_by">
|
||||||
|
<option value="date_desc" selected><?php _e('Numéros récents en premier', 'dynamiques'); ?></option>
|
||||||
|
<option value="date_asc"><?php _e('Numéros anciens en premier', 'dynamiques'); ?></option>
|
||||||
|
<option value="title_asc"><?php _e('Par ordre alphabétique', 'dynamiques'); ?></option>
|
||||||
|
</select>
|
||||||
<h2 class="post-count">
|
<h2 class="post-count">
|
||||||
<span class="post-count__count">
|
<span class="post-count__count">
|
||||||
<?php echo $post_count; ?>
|
<?php echo $post_count; ?>
|
||||||
</span>
|
</span>
|
||||||
<span class="post-count__text">
|
<span class="post-count__text">
|
||||||
<?php _e('Revues', 'dynamiques'); ?>
|
<?php _e('articles', 'dynamiques'); ?>
|
||||||
</span>
|
</span>
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<div class="search-bar">
|
|
||||||
<input type="text" placeholder="<?php _e('Rechercher par mot-clé', 'dynamiques'); ?>">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="post-grid__toolbar-actions" data-post-type="revues">
|
<div class="post-grid__toolbar-actions" data-post-type="revues">
|
||||||
|
<div class="search-bar">
|
||||||
|
<input type="text" placeholder="<?php _e('Rechercher par mot-clé', 'dynamiques'); ?>">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<select name="etiquettes">
|
<select name="etiquettes">
|
||||||
<option value="1"><?php _e('Thématiques', 'dynamiques'); ?></option>
|
<option value=""><?php _e('Tous les tags', 'dynamiques'); ?></option>
|
||||||
<?php foreach ($thematiques as $thematique) : ?>
|
<?php foreach ($thematiques as $thematique) : ?>
|
||||||
<option value="<?php echo $thematique->term_id; ?>"><?php echo $thematique->name; ?></option>
|
<option value="<?php echo $thematique->slug; ?>" <?php selected($etiquette_slug, $thematique->slug); ?>>
|
||||||
|
<?php echo $thematique->name; ?>
|
||||||
|
</option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
<select name="auteurs">
|
<select name="auteurs">
|
||||||
<option value="1"><?php _e('Auteur·e·s', 'dynamiques'); ?></option>
|
<option value=""><?php _e('Tous·tes les auteur·e·s', 'dynamiques'); ?></option>
|
||||||
<?php foreach ($authors as $author) : ?>
|
<?php foreach ($authors as $author) : ?>
|
||||||
<option value="<?php echo $author->ID; ?>"><?php echo $author->post_title; ?></option>
|
<option value="<?php echo $author->ID; ?>"><?php echo $author->post_title; ?></option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select name="sort_by">
|
|
||||||
<option value="recent" selected><?php _e('Numéros récents en premier', 'dynamiques'); ?></option>
|
|
||||||
<option value="oldest"><?php _e('Numéros anciens en premier', 'dynamiques'); ?></option>
|
|
||||||
<option value="alphabetical"><?php _e('Par ordre alphabétique', 'dynamiques'); ?></option>
|
|
||||||
</select>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<ul class="post-grid__list">
|
<ul class="post-grid__list">
|
||||||
|
|
||||||
<?php if ($revues->have_posts()) : ?>
|
<?php if ($revues->have_posts()) : ?>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user