function enqueue_category_filter_scripts() {
wp_enqueue_script('jquery');
wp_enqueue_script('category-filter', get_template_directory_uri() . '/js/category-filter.js', array('jquery'), null, true);
wp_enqueue_style('category-filter-style', get_template_directory_uri() . '/css/category-filter.css');
}
function filter_posts_by_category($query) {
if (is_main_query() && !is_admin()) {
$montenegro-summer = isset($_GET['montenegro-summer']) ? $_GET['montenegro-summer'] : '';
$accomodation-type = isset($_GET['accomodation-type']) ? $_GET['accomodation-type'] : '';
// Make sure there is at least one category selected
if (!empty($montenegro-summer) || !empty($accomodation-type)) {
$category_query = array();
// Filter by category 1
if (!empty($montenegro-summer)) {
$category_query[] = $montenegro-summer;
}
// Filter by category 2
if (!empty($accomodation-type)) {
$category_query[] = $accomodation-type;
}
// Set the tax_query parameter to filter by selected categories
$query->set('tax_query', array(
array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $category_query,
'operator' => 'IN', // Use 'IN' to match any of the selected categories
),
));
}
}
}
add_action('pre_get_posts', 'filter_posts_by_category');
No posts found based on your selection.
jQuery(document).ready(function($) {
$('#category-filter-form').on('submit', function(event) {
event.preventDefault(); // Prevent the form from submitting normally
var formData = $(this).serialize(); // Serialize the form data
$.get(window.location.href, formData, function(response) {
// Replace the posts grid with the new filtered content
$('.posts-grid').html($(response).find('.posts-grid').html());
});
});
});