carhop__dynamiques-theme__P.../template-parts/articles/articles-grid.php
Nonimart 9b460a9639
All checks were successful
continuous-integration/drone/push Build is passing
ENHANCEMENT Improve article filtering UI and functionality with new button filters and updated CSS styles
2025-10-22 14:56:54 +02:00

107 lines
3.4 KiB
PHP

<?php
// Récupérer le paramètre etiquette de l'URL
$etiquette_slug = isset($_GET['etiquette']) ? sanitize_text_field($_GET['etiquette']) : '';
// Construire les arguments de la query
$query_args = array(
'post_type' => 'articles',
'posts_per_page' => -1,
'post_status' => 'publish',
);
// Si on a une étiquette, ajouter le filtre taxonomy
if (!empty($etiquette_slug)) {
$query_args['tax_query'] = array(
array(
'taxonomy' => 'etiquettes',
'field' => 'slug',
'terms' => $etiquette_slug,
),
);
}
$articles = new WP_Query($query_args);
$post_count = $articles->post_count;
$authors = get_posts(array(
'post_type' => 'auteurs',
'posts_per_page' => -1
));
$thematiques = get_terms(array(
'taxonomy' => 'etiquettes',
'hide_empty' => true,
));
?>
<section class="post-grid articles-grid content-section <?php echo !empty($etiquette_slug) ? 'has-initial-filter' : '' ?>">
<div class="content-section__inner">
<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="auteur" aria-selected="false">Auteur·e</button>
<button data-filter="occurence" aria-selected="false">Occurence Textuelle</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">
<span class="post-count__count">
<?php echo $post_count; ?>
</span>
<span class="post-count__text">
<?php _e('articles', 'dynamiques'); ?>
</span>
</h2>
<div class="post-grid__toolbar-actions">
<div class="search-bar">
<input type="text" placeholder="<?php _e('Rechercher par mot-clé', 'dynamiques'); ?>">
</div>
<select name="etiquettes">
<option value=""><?php _e('Tous les tags', 'dynamiques'); ?></option>
<?php foreach ($thematiques as $thematique) : ?>
<option value="<?php echo $thematique->slug; ?>" <?php selected($etiquette_slug, $thematique->slug); ?>>
<?php echo $thematique->name; ?>
</option>
<?php endforeach; ?>
</select>
<select name="auteurs">
<option value=""><?php _e('Tous·tes les auteur·e·s', 'dynamiques'); ?></option>
<?php foreach ($authors as $author) : ?>
<option value="<?php echo $author->ID; ?>"><?php echo $author->post_title; ?></option>
<?php endforeach; ?>
</select>
</div>
</div>
<ul class="post-grid__list">
<?php if ($articles->have_posts()) : ?>
<?php while ($articles->have_posts()) : $articles->the_post(); ?>
<?php get_template_part('template-parts/articles/card-article', null, array(
'date' => get_the_date(),
'ThumbnailFocalPosition' => safe_get_thumbnail_focal_point_css(),
'image' => get_the_post_thumbnail_url(),
'link' => get_the_permalink(),
'ID' => get_the_ID(),
'showAuthors' => true,
)); ?>
<?php endwhile; ?>
<?php endif; ?>
</ul>
</div>
</section>