Khắc phục lỗi không phân trang khi dùng hàm query_posts trong WordPress khi dùng Permalink
Hôm nay, mình dùng hàm query_posts để customize số bài post sẽ được hiển thị trên một page. Đoạn mã của mình bên dưới: $cat_id = the_category_ID($echo=false); query_posts('cat='.$cat_id.'&posts_per_page=1'); while (have_posts()) { the_post(); the_content(); } echo ...
Hôm nay, mình dùng hàm query_posts để customize số bài post sẽ được hiển thị trên một page. Đoạn mã của mình bên dưới:
$cat_id = the_category_ID($echo=false); query_posts('cat='.$cat_id.'&posts_per_page=1'); while (have_posts()) { the_post(); the_content(); } echo posts_nav_link();
Mọi thứ đều ổn cả ngoại trừ việc bấm Next Page nó luôn luôn nằm ở trang số 2
Thế là mình ngồi google thì mình thấy bài viết này
Mình cải tiến code lên như sau:
$cat_id = the_category_ID($echo=false); $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; query_posts('cat='.$cat_id.'&posts_per_page=1&paged='.$paged); while (have_posts()) { the_post(); the_content(); } echo posts_nav_link();
Tuy nhiên, kết quả vẫn như thế
Mình phát hiện ra là mình dùng permalink nên các link được generate ra không có parameter paged mà là page. Mình sửa lại code như sau:
$cat_id = the_category_ID($echo=false); $paged = (get_query_var('page')) ? get_query_var('page') : 1; query_posts('cat='.$cat_id.'&posts_per_page=1&paged='.$paged); while (have_posts()) { the_post(); the_content(); } echo posts_nav_link();
Tuy nhiên, nó vẫn như thế. Mình debug hàm posts_nav_link() để xem nó work như thế nào. Mình phát hiện 2 hàm get_next_posts_link() và get_previous_posts_link() không chạy đúng bởi vì biến global $paged luôn có gì trị là 0. Thế là mình cải thiện đoạn mã trên như sau:
$cat_id = the_category_ID($echo=false); global $paged; $paged = (get_query_var('page')) ? get_query_var('page') : 1; query_posts('cat='.$cat_id.'&posts_per_page=1&paged='.$paged); while (have_posts()) { the_post(); the_content(); } echo posts_nav_link();
Ở đoạn mã trên, mình cập nhật giá trị của global $paged. Thế là lỗi được khắc phục.
Chúc code vui