wp-duckbehaviorjournal/archive-article.php
Kumi ac0a7eb942
feat: add search functionality to article archive
Split the article archive filters into two columns. The left column now contains the publication status filter, while the right column introduces a new search bar for querying articles. This improves user experience by allowing more precise and convenient filtering of articles. No visual changes are made to the existing filter functionality.
2024-06-20 15:05:39 +02:00

97 lines
No EOL
4.8 KiB
PHP

<?php get_header(); ?>
<!-- Archive Content -->
<section class="container my-5">
<h1 class="display-4 text-center">Articles</h1>
<div class="row mb-4">
<div class="col-md-6">
<form method="GET" action="" class="form-inline justify-content-start">
<div class="form-group mb-2">
<label for="publication_status" class="sr-only"><?php _e('Publication Status', 'duck-behavior-journal'); ?></label>
<select name="publication_status" id="publication_status" class="form-control" onchange="this.form.submit()">
<option value=""><?php _e('All Statuses', 'duck-behavior-journal'); ?></option>
<?php
$terms = get_terms(array(
'taxonomy' => 'publication_status',
'hide_empty' => false,
));
foreach ($terms as $term) {
$selected = (isset($_GET['publication_status']) && $_GET['publication_status'] == $term->slug) ? 'selected' : '';
echo '<option value="' . esc_attr($term->slug) . '" ' . $selected . '>' . esc_html($term->name) . '</option>';
}
?>
</select>
</div>
<button type="submit" class="btn btn-primary mb-2 ml-2"><?php _e('Filter', 'duck-behavior-journal'); ?></button>
</form>
</div>
<div class="col-md-6">
<form method="GET" action="" class="form-inline justify-content-end">
<div class="form-group mb-2">
<label for="s" class="sr-only"><?php _e('Search', 'duck-behavior-journal'); ?></label>
<input type="text" name="s" id="s" class="form-control" placeholder="<?php _e('Search', 'duck-behavior-journal'); ?>" value="<?php echo get_search_query(); ?>">
</div>
<button type="submit" class="btn btn-primary mb-2 ml-2"><?php _e('Search', 'duck-behavior-journal'); ?></button>
</form>
</div>
</div>
<div class="row">
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class="col-md-4">
<div class="card mb-4 shadow-sm">
<?php if (has_post_thumbnail()) : ?>
<a href="<?php the_permalink(); ?>">
<img src="<?php the_post_thumbnail_url(); ?>" class="card-img-top" alt="<?php the_title(); ?>">
</a>
<?php endif; ?>
<div class="card-body">
<a href="<?php the_permalink(); ?>">
<h5 class="card-title"><?php the_title(); ?></h5>
</a>
<p class="card-text">
<?php
$authors = get_post_meta(get_the_ID(), 'article_authors', true);
if (!empty($authors)) {
echo esc_html($authors[0]);
if (count($authors) > 1) {
echo ' et al.';
}
} else {
the_author();
}
?>
</p>
<p class="card-text"><?php the_excerpt(); ?></p>
<p class="card-text">
<?php
$terms = get_the_terms(get_the_ID(), 'publication_status');
if (!empty($terms) && !is_wp_error($terms)) {
$term_list = array();
foreach ($terms as $term) {
$term_list[] = $term->name;
}
echo implode(', ', $term_list);
}
?>
</p>
<a href="<?php the_permalink(); ?>" class="btn btn-outline-primary">Read More</a>
</div>
</div>
</div>
<?php endwhile;
else : ?>
<p><?php _e('Sorry, no articles found.', 'duck-behavior-journal'); ?></p>
<?php endif; ?>
</div>
<div class="row">
<div class="col-md-12">
<?php
echo paginate_links(array(
'total' => $loop->max_num_pages,
));
?>
</div>
</div>
</section>
<?php get_footer(); ?>