1BANNER 123
4.9/5 - (289 bình chọn)

Dạo này mình gặp khá là nhiều câu hỏi về vụ phân trang cho element của Flatsome, mình thì đã biết cách làm, tuy nhiên mình k thể giải quyết vấn đề cho các bạn được. Thay vào đó mình sẽ đưa ra 1 vài gợi ý để các bạn có thể làm nhé. Còn nếu như các bạn muốn giải quyết vấn đề, các bạn có thể thuê, mình tin là sẽ rất nhiều người sẵn sàng giải quyết vấn đề này cho các bạn.

Hôm nay mình sẽ hướng dẫn các bạn sử dụng phân trang của wordpress và áp dụng vào bất kì 1 post type nào nhé.

Trong DOC functions của wordpress nó đã hỗ trợ một function có phân trang, các bạn có thể đọc ở :https://developer.wordpress.org/reference/functions/paginate_links/.

Hàm này khá đơn giản và dễ viết, các bạn hoàn toàn có thể áp dụng ở bất kì 1 post type nào chỉ với 1 vài set up cơ bản.

paginate_links();

Các bạn chỉ cần copy function này và dán vào vị trí kết thúc vòng lặp wp_query là được.

$total_pages = $products->max_num_pages;

                if ($total_pages > 1){

                    $current_page = max(1, get_query_var('page'));

                    echo paginate_links(array(
                        'base' => get_pagenum_link(1) . '%_%',
                        'format' => '/page/%#%',
                        'current' => $current_page,
                        'total' => $total_pages,
                        'prev_text'    => __('« prev'),
                        'next_text'    => __('next »'),
                    ));
                }

Các bạn chú ý ở chỗ $products, các bạn thay thế bằng wp_query của mình nhé.

Dưới đây là 1 ví dụ.

$args = array(
 'post_type'        => 'product',
 'numberposts' => -1,
 'posts_per_page' => 3,
);
$query = new WP_Query( $args ); 
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post(); 
the_title();
}
$total_pages = $query->max_num_pages;
                if ($total_pages > 1){
                    $current_page = max(1, get_query_var('page'));
                    echo paginate_links(array(
                        'base' => get_pagenum_link(1) . '%_%',
                        'format' => '/page/%#%',
                        'current' => $current_page,
                        'total' => $total_pages,
                        'prev_text'    => __('« prev'),
                        'next_text'    => __('next »'),
                    ));
                }
}
wp_reset_query();

Và tận hưởng kết quả của mình nhé.

Các bạn lưu ý chỗ get_query_var(‘page’), các bạn sử dụng page khi bạn muốn phân trang tại các page, post. Còn sử dụng paged ở các trang lưu trữ như archive.

Chúc các bạn thành công

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 *