Phân trang (Pagination) là một yếu tố quan trọng giúp cải thiện trải nghiệm người dùng và tối ưu hóa hiệu suất website WordPress của bạn. Bài viết này sẽ hướng dẫn chi tiết cách code phân trang WordPress. Nếu bạn đang tìm kiếm cách tạo phân trang WordPress hoặc tùy chỉnh phân trang WordPress, hãy cùng khám phá dưới đây!
Code Phân Trang WordPress
<?php
global $wp_query;
$big = 999999999; // Số giả để tạo link
$pagination_links = paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var( 'paged' ) ),
'total' => $wp_query->max_num_pages,
'prev_text' => '« Trước',
'next_text' => 'Tiếp »',
) );
if ( $pagination_links ) {
echo '<nav class="pagination">';
echo $pagination_links;
echo '</nav>';
}
?>
Giải thích:
- $wp_query: Biến toàn cục chứa dữ liệu truy vấn hiện tại (các bài viết, số trang…).
- $big = 999999999: Giá trị lớn dùng để thay thế trong URL, tránh trùng lặp khi tạo liên kết phân trang.
base
&format
: Xác định cấu trúc URL cho các trang (dùngget_pagenum_link()
để lấy link mặc định, sau đó thay999999999
thành%#%
).current
: Trang hiện tại, lấy từ biếnpaged
(hoặc 1 nếu không có).total
: Tổng số trang (dựa trên$wp_query->max_num_pages
).prev_text
&next_text
: Văn bản hiển thị cho nút Trang trước / Trang sau.- Đặt kết quả của
paginate_links()
trong một thẻ<nav>
hoặc<div>
để dễ dàng chỉnh CSS.
Thêm css để làm đẹp phân trang
.pagination {
display: flex;
justify-content: center;
gap: 8px;
margin: 20px 0;
}
.pagination a, .pagination span {
padding: 8px 12px;
border: 1px solid #ddd;
color: #0073aa;
text-decoration: none;
}
.pagination .current {
background-color: #0073aa;
color: #fff;
border-color: #0073aa;
}
.pagination a:hover {
background-color: #eee;
}
Đặt code phân trang ở đâu?
Bạn có thể chèn đoạn code phân trang vào file template hiển thị danh sách bài viết, thường là index.php
, archive.php
, hoặc search.php
của theme (tùy vào cấu trúc theme).
Đảm bảo bạn đặt code bên dưới vòng lặp (loop) hiển thị bài viết, ví dụ :
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<!-- Nội dung bài viết -->
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php endwhile; ?>
<!-- Code phân trang ngay sau vòng lặp -->
<?php
global $wp_query;
$big = 999999999; // Số giả để tạo link
$pagination = paginate_links( array(
'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var( 'paged' ) ),
'total' => $wp_query->max_num_pages
) );
if ( $pagination ) {
echo '<nav class="pagination">' . $pagination . '</nav>';
}
?>
<?php else : ?>
<p>Không có bài viết nào.</p>
<?php endif; ?>
Kết Luận
Hy vọng bài viết này đã cung cấp cho bạn những thông tin hữu ích về code phân trang WordPress. Nếu bạn có bất kỳ câu hỏi nào, hãy để lại bình luận bên dưới để chúng tôi hỗ trợ bạn!