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é
/*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_action( '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