jQuery(document).ready(function($) {
console.log(ajax_object);
const categoryButtons = $('.category-btn');
const postContainer = $('#post-container');
const paginationContainer = $('.pagination');
let currentCategory = 'all';
function filterPosts(category, page) {
$.ajax({
url: ajax_object.ajax_url,
type: 'POST',
data: {
action: 'filter_posts',
category: category,
paged: page
},
success: function(response) {
postContainer.html(response.posts);
updatePagination(response.total_pages, response.current_page, category);
},
error: function(xhr, status, error) {
console.error('AJAX Error:', status, error);
}
});
}
function updatePagination(totalPages, currentPage, category) {
let paginationHtml = '<nav>';
if (currentPage == 1) {
paginationHtml += '<span class="pagination-disabled prev"><img src="https://stillviral.com/wp-content/uploads/2025/03/Icon.svg" alt="Previous" class="pagination-icon prev"></span>';
} else {
paginationHtml += '<a href="#" class="page-link prev" data-page="' + (currentPage - 1) + '"><img src="https://stillviral.com/wp-content/uploads/2025/03/Icon.svg" alt="Previous" class="pagination-icon prev"></a>';
}
for (let i = 1; i <= totalPages; i++) {
if (i == currentPage) {
paginationHtml += '<span class="current">' + i + '</span>';
} else {
paginationHtml += '<a href="#" class="page-link" data-page="' + i + '">' + i + '</a>';
}
}
if (currentPage == totalPages) {
paginationHtml += '<span class="pagination-disabled next"><img src="https://stillviral.com/wp-content/uploads/2025/03/Icon.svg" alt="Next" class="pagination-icon next"></span>';
} else {
paginationHtml += '<a href="#" class="page-link next" data-page="' + (currentPage + 1) + '"><img src="https://stillviral.com/wp-content/uploads/2025/03/Icon.svg" alt="Next" class="pagination-icon next"></a>';
}
paginationHtml += '</nav>';
paginationContainer.html(paginationHtml);
}
categoryButtons.on('click', function(e) {
e.preventDefault();
const category = $(this).data('category');
currentCategory = category;
categoryButtons.removeAttr('data-active');
$(this).attr('data-active', 'true');
filterPosts(category, 1);
});
paginationContainer.on('click', '.page-link', function(e) {
e.preventDefault();
const page = $(this).data('page');
filterPosts(currentCategory, page);
});
});
Comments