Chào mọi người, dạo gần đây mình nhận được email của nhiều bạn học viên gửi về liên quan đến các lỗi phân trang khi các bạn code. Sau đây mình xin tổng hợp các lỗi hay gặp, cũng như giải pháp khắc phục
+ Thiếu hàm lấy giá trị tham số paged cho câu truy vấn WP_Query:

+ Chưa phân biệt được paged và page
Có nhiều bạn chưa phân biệt được 2 biến này. Nôm na, biến $paged sẽ lấy giá trị từ biến truy vấn tên là : paged. Vậy biến truy vấn paged nằm ở đâu. Chỉ thấy trên đường dẫn có mỗi biến truy vấn page thôi mà (domain.com/page/1), vậy paged ở đầu ra.
Giải thích: biến truy vấn paged và 1 biến truy vấn để server wordpress hiểu và sử dụng cho việc thiết lập câu truy vấn. Còn đường dẫn domain.com/page/1, đây chỉ là định dạng cấu trúc đường dẫn mà các bạn thiết lập trong cấu hình settings.
Luồng hoạt động thì wordpress sẽ map biến page với biến truy vấn paged để hệ thống server wordpress hiểu bằng các rules.
Chính vì vậy, khi sử dụng hàm paginate_links các bạn lưu ý ở chỗ format phải viết đúng như hình bên dưới để server wordpress có thể hiểu và thực hiện đúng.

+ Không chạy được phân trang và trả về lỗi 404
Đây là lỗi hay gặp nhất. Các bạn nói đã viết đúng câu truy vấn, nhưng khi bấm qua trang 2 thì không thấy bài viết.
Giải pháp:
- Kiểm tra coi bạn có bao nhiêu bài viết, giả sử tổng bài viết của bạn = 3, trong câu truy vấn bạn set thuộc tính posts_per_page = 3 thì nó không hiện phân trang là đúng rồi.
- Kiểm tra trong phần cấu hình settings, nếu bạn set trong đó giới hạn số bài viết hiển thị = 3 và câu truy vấn bạn set posts_per_page = 2 thì nó sẽ ưu tiên cấu hình settings nha. Tốt nhất là nên đồng bộ cả 2 đều = 3 như hình bên dưới.
