Có bạn email Jam hỏi về cách phân trang riêng cho một category nào đó riêng hẳn chứ không theo cài đặt trong phần cài đặt đọc trong ADmin, sau đây Jam xin chia sẻ nó lên trên blog với hi vọng sẽ có ích cho nhiều người hơn nữa.
Đầu tiên, các bạn cần xác định hook mà các bạn sẽ phải hook vào, sau đó xét điều kiện là category với ID là X nào đó thì sẽ hook vào để thay đổi giá trị, trường hợp khác là sử dụng $Query riêng, trường hợp khác nữa là hook vào Query hiện tại thay đổi giá trị của chúng.
Okey, Jam chọn cách thay đổi trong phần Query, vừa nhanh mà lại hiệu quả, không làm ảnh hưởng tốc độ của trang.
Jam tìm được hook PRE_GET_POSTS rất hay, áp dụng thử luôn:
function jam_repage_category( $q ) {
if ( $q->is_main_query() && $q->is_category() && ! is_admin() ) {
$cat = get_query_var('cat');
if ( $cat = 123 )
$q->set('posts_per_page', '6');
}
}
add_action( 'pre_get_posts', 'jam_repage_category' );
Lưu ý:
* Thay số 123 bằng số riêng ID cat của bạn, chỉ cần thử bằng cách đặt hàm get_query_var(cat) trong file Category.php hoặc Archive.php là có thể hiển thị được số ID của Category, từ đó bạn biết được đâu là con số bạn cần.
* Có thể sử dụng hàm is_category( 123 ) để kiểm tra xem đúng ID mình cần hay chưa, tuy nhiên mình thích hàm mình viết hơn 😀
* Hàm này nên để trong một plugin thay vì cho vào file functions.php của giao diện !
* Đã test, code chạy như mong đợi 😀 tuyệt cú mèo !
CHúc các bạn thành công ! CÓ câu hỏi nào về lập trình hoặc WordPress có thể email hoặc để lại lời nhắn tại form comment nhé !
Thanks Jam for this;
“if ( $cat = 123 )” hình như cần “==” Jam ơi.
Chúc Jam thành công và như ý.
Mình làm phần phân trang trong phần http://kemduongtrangdatoanthan.net/lam-dep/page/2 cho phần này mà sao không được bạn nhỉ
mình muốn phân trang cho phần này giúp mình với