Người Viết : ViKiMi Editor

Hướng dẫn phân trang khi sử dụng Lớp WP_Query của WordPress, cách sử dụng tốt hơn !
Phân trang WordPress với lớp WP_Query cho phép bạn thực hiện công việc này một cách hiệu quả nhất. Lớp WP_Query cho phép bạn dễ dàng làm với nhiều ý đồ khác nhau. WordPress đã thiết kế WP_Query có tính năng mạnh mẽ với những tham số hỗ trợ công việc phân trang cho Website, thậm chí bạn cũng có thể Customize một cách hiệu quả.
Những gì bạn cần làm đó là sử dụng sao cho đúng những gì mà WordPress cung cấp. Vậy là Website của bạn sẽ có những phân trang đẹp mắt và không thua cạnh bất kỹ những Website thông thường nào bạn đã từng thấy. Những tham số để sử dụng phân trang được WordPress cung cấp như sau:
o nopaging (boolean) : Cho phép hiển thị tất cả Posts hoặc sẽ sử dụng phân trang. Giá trị mặc định ‘False’, sử dụng Paging
o posts_per_page (int) : Số Post sẽ hiển thị trên Page (Hoặc sẽ thay thế bởi showposts). Nếu thiết lập ‘posts_per_page’ => -1 thì sẽ hiển thị tất cả posts và sẽ bỏ qua Offset.
o posts_per_archive_page (int) : Số posts hiển thị trên Page, chỉ duy nhất với Archive pages
o offset (int) : Số post sẽ thay thế hoặc bỏ qua. Thiết lập Offset sẽ ghi đè/ bỏ qua tham số Paged và phá vỡ phân trang. Tham số ‘offset’ sẽ bị bỏ qua khi ‘posts_per_page’ => -1
o paged (int) : Số của Page đang được phân trang, Ví dụ đang ở Paged : 2
o page (int) : Số của trang với Static front page. Sử dụng với STatic Front Page
o ignore_sticky_posts (int) : Bỏ qua Post stickiness
Khi thực hiện phân trang với lớp WP_Query của WordPress chúng ta luôn cần chú ý thiết lập những tham số truyền vào, tối thiểu với những tham số sau :
+ posts_per_page : Số Post sẽ hiển thị trên một Page
+ Paged ( Hoặc Page sử dụng cho Static front page ) : Số của Page đang được phân trang. Thông thường là trang hiện tại trong các trang được phân trang.
A ) Phân trang với Static front page
HIỂN THỊ POSTS Ở TRANG HIỆN TẠI TRÊN MỘT STATIC FRONT PAGE
$paged = ( get_query_var(‘page’) ) ? get_query_var(‘page’) : 1;
$args = array(
‘post_type’ => ‘post’,
‘posts_per_page’ => 10,
‘paged’ => $paged,
‘category_name’ => ‘tin-tuc-moi’,
);
$my_query = new WP_Query($args);
<?php if ( $my_query->have_posts() ) :
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<!– rest of the loop –>
<!– the title, the content etc.. –>
<?php endwhile; ?>
<!– pagination –>
<?php paginate_links() ?>
<?php else : ?>
<!– No posts found –>
<?php endif; ?>
B ) Phân trang khác Static front page
HIỂN THỊ POSTS Ở TRANG HIỆN TẠI ĐANG ĐƯỢC PHÂN TRANG
$paged = ( get_query_var(‘paged’) ) ? get_query_var(‘paged’) : 1;
$args = array(
‘post_type’ => ‘post’,
‘posts_per_page’ => 20,
‘paged’ => $paged,
);
$my_query = new WP_Query($args);
<?php if ( $my_query->have_posts() ) :
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<!– rest of the loop –>
<!– the title, the content etc.. –>
<?php endwhile; ?>
<!– pagination –>
<?php paginate_links() ?>
<?php else : ?>
<!– No posts found –>
<?php endif; ?>
[ Lưu ý khi thực hiện phân trang ] : Sẽ thực hiện lấy về số trang bài đăng hiện tại được phân trang nhờ tham số truy vấn dưới đây
+ get_query_var(‘page’) , thực hiện lấy về giá trị tham số truy vấn page nếu bạn muốn truy vấn của bạn hoạt động với Static front page. Tham số truy vấn page còn nắm giữ gía trị số trang hiện tại được phân trang dành cho Single Post hoặc Page. Và bạn vẫn hay sử dụng quicktag <!–nextpage–> trong nội dung Post hoặc Page.
+ get_query_var(‘paged’) , thực hiện lấy về giá trị tham số truy vấn paged nếu bạn muốn truy vấn hoạt động phân trang không phải trên một Static Front Page. Các tham số truy vấn này thực sự cần thiết khi phân trang cho một WordPress Wesbite.