Với nhiều yêu cầu khác nhau. Đôi khi cần sử dụng tới offset đối với main query trong trang chuyên mục bài viết nhưng không đơn giản là hook và pre_get_posts rồi thêm offset là xong. Nó sẽ dẫn tới sai hàm phân trang
Vậy đoạn code dưới đây sẽ giúp bạn việc đó. Cụ thể như trong code là offset 4 bài viết mới nhất trong trang chuyên mục
Thêm code này vào functions.php của theme bạn đang kích hoạt nhé
Để duy trì blog nên mình có làm aff cho 1 số bên hosting. Nhưng dù aff mình cũng chọn 1 số nhà cung cấp uy tín về chất lượng và support nên các bạn cứ yên tâm nhé.
Nếu có mua hosting mà có trong list dưới đây các bạn click vào link trước khi mua để ủng hộ mình nhé. Mình cảm ơn nhiều
- Azdigi: Giá rẻ thì dùng gói Pro Gold Hosting còn chất lượng hơn thì em khuyên dùng Business Hosting. Có điều kiện thì lên VPS nhé
- Tino hosting
- iNet
- Nước ngoài thì Vultr
/*offset in category*/
function offset_category_posts( $query ) {
if ( $query->is_main_query() && is_category() && ! is_admin()) {
$offset = 4;
$paged = get_query_var('paged', 1);
$posts_per_page = get_option('posts_per_page');
$offset = ($paged - 1) * $posts_per_page + $offset;
$query->set( 'offset', $offset );
}
}
add_action( 'pre_get_posts', 'offset_category_posts' );
function found_offset( $found_posts, $query ) {
$offset = 4;
if( !is_admin() && is_category() && $query->is_main_query() ) {
$found_posts = $found_posts - $offset;
}
return $found_posts;
}
add_filter( 'found_posts', 'found_offset', 10, 2 );
/*#offset in category*/
Trong code trên bạn thấy $offset = 4; nghĩa là trong main query của trang chuyên mục bài viết sẽ loại 4 bài viết mới nhất, hãy bằng số mà bạn muốn là được
Chúc các bạn thành công!
- Bình luận