Menu

Phân trang trong wordpress và tùy chỉnh phân trang

Phân trang trong WordPress là một kỹ thuật không thể thiếu khi bạn xây dựng các website tin tức, blog, hoặc các hệ thống dữ liệu lớn. Việc triển khai phân trang một cách hiệu quả sẽ giúp website của bạn cải thiện hiệu năng, tối ưu SEO và mang lại trải nghiệm người dùng tốt hơn. Đặc biệt, trong các dự án thực tế, việc tùy chỉnh giao diện và chức năng của phân trang theo yêu cầu thiết kế riêng là một yêu cầu gần như bắt buộc.

Bài viết này sẽ cung cấp cho bạn một hướng dẫn chuyên sâu về cách thức hoạt động của phân trang trong WordPress, các hàm lõi liên quan, cách triển khai với WP_Query, tùy chỉnh giao diện phân trang và xử lý các tình huống nâng cao trong môi trường production. Hãy cùng khám phá những bí mật đằng sau kỹ thuật quan trọng này để nâng cao hiệu suất website của bạn.

Phân trang trong wordpress và tùy chỉnh phân trang

Phân trang trong wordpress và tùy chỉnh phân trang

Tổng quan về phân trang trong WordPress

Về cơ bản, phân trang trong WordPress là một cơ chế cho phép bạn chia nhỏ danh sách bài viết thành nhiều trang khác nhau. Thay vì hiển thị toàn bộ 50 bài viết trên cùng một trang, hệ thống sẽ tự động chia chúng thành nhiều trang nhỏ hơn, ví dụ như /page/2, /page/3, giúp giảm tải dữ liệu và tối ưu hóa SEO.

WordPress sử dụng biến truy vấn paged để xác định trang hiện tại mà người dùng đang xem. Biến này có ảnh hưởng trực tiếp đến câu truy vấn SQL được tạo ra bởi WP_Query. Hiểu rõ cách biến paged hoạt động là chìa khóa để bạn kiểm soát quá trình phân trang trong WordPress một cách hiệu quả.

Cấu trúc URL phân trang mặc định trong WordPress thường có dạng như sau:

  • example.com/blog/
  • example.com/blog/page/2/
  • example.com/blog/page/3/

Việc hiểu rõ cơ chế này sẽ giúp bạn kiểm soát hoàn toàn quá trình phân trang trong WordPress, từ đó tùy chỉnh nó theo ý muốn và phù hợp với yêu cầu của dự án.

Cách WordPress xử lý phân trang mặc định

Biến paged và truy vấn chính

WordPress sử dụng global query để xác định nội dung của trang hiện tại. Khi người dùng truy cập vào trang 2, hệ thống sẽ tự động truyền tham số paged=2 vào truy vấn chính.

Trong theme của bạn, bạn có thể lấy giá trị này bằng đoạn code sau:


$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

Giá trị này đặc biệt quan trọng khi bạn sử dụng WP_Query để tạo các truy vấn tùy chỉnh. Nó giúp bạn đảm bảo rằng phân trang hoạt động chính xác trên các truy vấn này.

Để hiểu rõ hơn về cách WordPress xử lý truy vấn, bạn có thể tham khảo thêm về WP_Query trên trang WordPress Developer Resources.

Hiển thị phân trang với the_posts_pagination

WordPress cung cấp một hàm rất tiện lợi để hiển thị phân trang, đó là:


the_posts_pagination();

Đây là cách đơn giản nhất để hiển thị phân trang cho loop mặc định của WordPress. Tuy nhiên, giao diện mặc định của phân trang này thường khá cơ bản và cần được tùy chỉnh thêm để phù hợp với thiết kế tổng thể của website.

Phân trang trong WordPress với WP_Query tùy chỉnh

Trong các dự án thực tế, bạn thường sử dụng WP_Query để truy vấn dữ liệu theo các custom post type, taxonomy hoặc meta field. Trong những trường hợp này, việc cấu hình phân trang trong WordPress cần được thực hiện thủ công.

Một ví dụ điển hình là khi bạn muốn hiển thị danh sách các sản phẩm trên một trang, nhưng chỉ hiển thị một số lượng sản phẩm nhất định trên mỗi trang để cải thiện trải nghiệm người dùng. Lúc này, việc sử dụng WP_Query và tùy chỉnh phân trang là vô cùng quan trọng.

Ví dụ truy vấn có phân trang


$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$args = array(
 'post_type' => 'post',
 'posts_per_page' => 6,
 'paged' => $paged
);

$query = new WP_Query($args);

Tham số paged là bắt buộc phải có nếu bạn muốn phân trang trong WordPress hoạt động đúng cách. Nếu không có tham số này, WordPress sẽ không biết bạn đang ở trang nào và sẽ hiển thị kết quả không chính xác.

Hiển thị phân trang với paginate_links


echo paginate_links(array(
 'total' => $query->max_num_pages
));

Thuộc tính max_num_pages giúp WordPress biết tổng số trang cần hiển thị trong phân trang. Nếu không có thuộc tính này, WordPress sẽ không thể tạo ra các liên kết phân trang chính xác.

Tùy chỉnh giao diện phân trang theo thiết kế

Trong thực tế, các nhà thiết kế thường yêu cầu phân trang có một giao diện đặc biệt, ví dụ như:

  • Nút trước / sau
  • Hiển thị số trang
  • Active page nổi bật
  • Sử dụng icon thay vì text

Để đáp ứng những yêu cầu này, bạn cần phải tùy chỉnh giao diện phân trang mặc định của WordPress.

Ngoài ra, để website của bạn trở nên chuyên nghiệp hơn, bạn có thể tham khảo Theme WordPress AI 2026 top 10 giao diện bùng nổ cực đỉnh để có những lựa chọn giao diện phù hợp.

Ví dụ tùy chỉnh paginate_links


echo paginate_links(array(
 'base' => get_pagenum_link(1) . '%_%',
 'format' => 'page/%#%/,
 'current' => $paged,
 'total' => $query->max_num_pages,
 'prev_text' => '«',
 'next_text' => '»',
 'type' => 'list'
));

Tham số type = list sẽ tạo ra một danh sách ul/li, giúp bạn dễ dàng styling phân trang bằng CSS. Điều này cho phép bạn tùy chỉnh giao diện phân trang một cách linh hoạt và dễ dàng.


Tối ưu SEO khi triển khai phân trang trong WordPress

Phân trang trong WordPress có ảnh hưởng trực tiếp đến SEO. Nếu bạn triển khai sai cách, nó có thể gây ra các vấn đề như trùng lặp nội dung hoặc index sai cấu trúc.

Các nguyên tắc quan trọng

  • Không canonical tất cả page về trang 1
  • Đảm bảo URL /page/2 index được
  • Sử dụng meta robots đúng cách nếu cần
  • Giữ title và description hợp lý

Google hiện nay đã có khả năng xử lý phân trang trong WordPress khá tốt, nhưng cấu trúc phân trang của bạn vẫn cần phải rõ ràng và logic để đảm bảo SEO tốt nhất.

Phân trang cho Custom Post Type

Khi xây dựng các website bất động sản, sản phẩm hoặc dự án, bạn thường sử dụng custom post type. Phân trang trong WordPress cho custom post type hoạt động tương tự như post thường, nhưng bạn cần chú ý đến slug và rewrite rule.

Ví dụ:


'rewrite' => array(
 'slug' => 'du-an',
 'with_front' => false
)

Đảm bảo cấu trúc URL có dạng:

  • example.com/du-an/
  • example.com/du-an/page/2/

Phân trang Ajax thay vì Reload trang

Nhiều dự án hiện đại không muốn reload toàn bộ trang khi thực hiện phân trang. Thay vào đó, họ sử dụng Ajax để load thêm dữ liệu.

Nguyên tắc triển khai

  1. Bắt sự kiện click
  2. Gửi Ajax request
  3. Trả về HTML
  4. Append nội dung

Cách này giúp cải thiện trải nghiệm người dùng, nhưng bạn cần xử lý SEO một cách cẩn thận để đảm bảo rằng các trang phân trang vẫn được index đúng cách.

Lỗi thường gặp khi làm phân trang trong WordPress

  • Quên truyền tham số paged
  • Không reset postdata sau WP_Query
  • Phân trang không hoạt động trong trang tĩnh
  • Xung đột rewrite rule
  • Truy vấn quá nặng gây chậm

Những lỗi này thường xuất hiện khi developer không hiểu rõ cơ chế hoạt động của truy vấn chính trong WordPress.

Best Practice khi triển khai phân trang

  • Luôn kiểm tra biến paged
  • Giữ posts_per_page hợp lý
  • Tối ưu truy vấn để tránh full table scan
  • Không query quá nhiều meta field
  • Test trên môi trường staging trước khi deploy

Trong các dự án lớn, việc tối ưu phân trang trong WordPress có thể giúp bạn giảm tải server một cách đáng kể. Hãy luôn chú ý đến hiệu năng và đảm bảo rằng phân trang của bạn hoạt động một cách mượt mà.

Kết luận

Phân trang trong WordPress không chỉ đơn thuần là việc hiển thị các con số trang. Nó liên quan mật thiết đến truy vấn dữ liệu, cấu trúc URL, SEO và hiệu năng của hệ thống. Khi bạn hiểu rõ cơ chế paged, WP_Querypaginate_links, bạn có thể tùy chỉnh phân trang trong WordPress theo bất kỳ thiết kế nào mà bạn mong muốn.

Trong môi trường production, việc triển khai đúng kỹ thuật phân trang trong WordPress sẽ giúp website của bạn tải nhanh hơn, thân thiện hơn với các công cụ tìm kiếm và dễ dàng mở rộng về sau. Nếu bạn đang xây dựng một theme WordPress chuyên nghiệp, việc nắm vững kỹ thuật phân trang là một bước không thể thiếu. Ngoài ra bạn có thể tham khảo thêm về Ajax trong wordpress để có thêm nhiều kiến thức bổ ích.

FAQ: Phân trang WordPress - Thủ thuật tối ưu SEO và trải nghiệm người dùng

Phân trang WordPress là gì và tại sao cần thiết?

Phân trang là chia nhỏ danh sách bài viết thành nhiều trang, giúp giảm tải dữ liệu, cải thiện SEO và tăng trải nghiệm người dùng.

Biến 'paged' trong WordPress hoạt động như thế nào?

Biến ‘paged’ xác định trang hiện tại người dùng đang xem và ảnh hưởng trực tiếp đến truy vấn SQL được tạo bởi WP_Query.

Hàm 'the_posts_pagination()' dùng để làm gì?

Hàm ‘the_posts_pagination()’ hiển thị phân trang cho loop mặc định của WordPress một cách đơn giản.

Làm thế nào để phân trang với WP_Query tùy chỉnh?

Sử dụng tham số ‘paged’ trong mảng arguments của WP_Query để phân trang hoạt động chính xác.

Hàm 'paginate_links()' dùng để hiển thị phân trang như thế nào?

Hàm ‘paginate_links()’ tạo ra các liên kết phân trang, cần thuộc tính ‘total’ để xác định tổng số trang.

Làm sao để tùy chỉnh giao diện phân trang WordPress?

Sử dụng tham số của hàm ‘paginate_links()’ (ví dụ: ‘type’ => ‘list’) và CSS để styling giao diện phân trang.

Phân trang WordPress ảnh hưởng đến SEO như thế nào?

Phân trang sai cách có thể gây trùng lặp nội dung. Cần đảm bảo URL được index, sử dụng meta robots đúng cách và giữ title/description hợp lý.

Phân trang Ajax trong WordPress là gì và lợi ích của nó?

Phân trang Ajax load thêm dữ liệu mà không cần tải lại toàn bộ trang, cải thiện trải nghiệm người dùng nhưng cần xử lý SEO cẩn thận.

Bài trước Enqueue trong WordPress load js css đúng chuẩn Bài tiếp theo Tạo theme option trong wordpress chuyên sâu cho developer

Đánh giá từ khách hàng

Tổng hợp trải nghiệm thực tế từ khách đã lưu trú.

5,0 /5

Tuyệt vời

9 đánh giá

Tuyệt vời
9
Rất tốt
0
Trung bình
0
Tạm được
0
Tệ
0
Chất lượng nội dung
5,0
Áp dụng thực tế
5,0
Trình bày bài viết
5,0
Giá trị kiến thức
5,0
TL

Trương Mỹ Linh

Đã đánh giá vào 14/02/2026

5,0 /5

Bài viết này thực sự là một hướng dẫn toàn diện về phân trang trong WordPress. Từ tổng quan, cách xử lý mặc định, đến tùy chỉnh giao diện, tối ưu SEO và xử lý các tình huống nâng cao. Rất đáng đọc và tham khảo! Ad cho mình hỏi thêm về vấn đề xung đột rewrite rule với plugin khác thì xử lý như thế nào ạ?

LB

Lý Quốc Bảo

Đã đánh giá vào 14/02/2026

5,0 /5

Mình thấy cái đoạn code tùy chỉnh `paginate_links` để tạo danh sách ul/li rất hay. Như vậy dễ dàng dùng CSS để style theo ý mình, không bị bó buộc vào giao diện mặc định của WordPress. Vote cho bài viết!

VT

Vũ Phương Thảo

Đã đánh giá vào 14/02/2026

5,0 /5

Best practice khi triển khai phân trang rất hữu ích. Mình sẽ áp dụng các nguyên tắc này để tối ưu hiệu năng website và đảm bảo phân trang hoạt động mượt mà. Đặc biệt là phần test trên môi trường staging trước khi deploy, cái này nhiều khi mình quên mất.

ĐQ

Đỗ Nhật Quang

Đã đánh giá vào 14/02/2026

5,0 /5

Những lỗi thường gặp khi làm phân trang được liệt kê rất chi tiết. Mình đã từng gặp phải lỗi quên truyền tham số paged và mất rất nhiều thời gian để tìm ra nguyên nhân. Bài viết này giúp mình tránh được những sai lầm tương tự trong tương lai.

HA

Hoàng Minh Anh

Đã đánh giá vào 14/02/2026

5,0 /5

Mình thích nhất phần nói về phân trang Ajax. Mình đang muốn áp dụng kỹ thuật này để cải thiện trải nghiệm người dùng trên website. Bài viết đã cung cấp các nguyên tắc triển khai cơ bản. Cảm ơn tác giả!

PT

Phạm Anh Tuấn

Đã đánh giá vào 14/02/2026

5,0 /5

Bài viết rất hay và đầy đủ. Mình đặc biệt quan tâm đến phần tối ưu SEO khi phân trang. Các nguyên tắc như không canonical về trang 1, đảm bảo URL /page/2 index được... rất quan trọng để tránh các vấn đề về SEO. Ad có thể chia sẻ thêm về cách sử dụng meta robots cho phân trang được không?

TH

Trần Thu Hà

Đã đánh giá vào 14/02/2026

5,0 /5

Mình đang xây dựng website bất động sản và sử dụng Custom Post Type. Bài viết đã giúp mình hiểu rõ hơn về cách phân trang cho Custom Post Type và những lưu ý về slug, rewrite rule. Thanks ad!

LN

Lê Văn Nam

Đã đánh giá vào 14/02/2026

5,0 /5

Mình mới làm quen với WordPress và đang gặp khó khăn với việc tùy chỉnh giao diện phân trang. Bài viết này hướng dẫn rất cụ thể cách sử dụng paginate_links và CSS để tạo ra phân trang theo ý muốn. Rất hữu ích!

NM

Nguyễn Thị Mai

Đã đánh giá vào 14/02/2026

5,0 /5

Bài viết quá chi tiết! Mình đang làm website tin tức mà phần phân trang cứ bị lỗi hoài. Đọc xong bài này thấy sáng ra nhiều điều, đặc biệt là cái vụ biến 'paged' và cách WP_Query nó hoạt động. Cảm ơn tác giả nhiều!

Viết đánh giá của bạn

Vui lòng đăng nhập để gửi đánh giá.
Chất lượng nội dung
Áp dụng thực tế
Trình bày bài viết
Giá trị kiến thức

Tối đa 5 ảnh, mỗi ảnh không quá 5MB.

    Tìm kiếm... Ctrl+K

    Kira ChatBox - Trợ lý AI