Wordpress coding

Phân trang riêng cho từng Category một trong WordPress

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é !

TÁC GIẢ:

Tôi là Jam, thâm niên 7 năm thiết kế website và làm SEO. Hãy theo dõi blog của tôi để nhận được nhiều chia sẻ thú vị xung quanh chủ đề công nghệ.

Có 2 bình luận !

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *