Hướng Dẫn Code Phân Trang WordPress

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ùng get_pagenum_link() để lấy link mặc định, sau đó thay 999999999 thành %#%).
  • current: Trang hiện tại, lấy từ biến paged (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!

Đánh giá bài viết
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments