Khi viết code cho WordPress theme, bạn muốn tạo phân trang cho danh mục là các số thứ tự. Daipho.com hướng dẫn các bạn làm như sau:
Truy xuất các liên kết phân trang
Để hiển thị phân trang, bạn sử dụng hàm sau:
paginate_links( string|array $args = "" ): string|string[]|void
Các tham số
$args
string|array optional
Mảng hoặc chuỗi đối số để tạo liên kết phân trang cho danh mục.
Giá trị mặc định là rỗng “”.
Các phần tử thường dùng trong mảng này bao gồm:
base
string
Cơ sở của url phân trang.format
string
Định dạng cho cấu trúc phân trang.total
int
Tổng số trang. Mặc định là giá trịmax_num_pages
củaWP_Query
hoặc1
.prev_text
string
Nhãn cho trang trước. Mặc định là ‘« Previous
’.next_text
string
Nhãn cho trang sau. Mặc định là ‘Next »
’.
Giá trị trả về
string|string[]|void
Chuỗi liên kết trang hoặc mảng liên kết trang, tùy thuộc vào đối số 'type'
.
Trả về rỗng nếu tổng số trang nhỏ hơn 2.
Sử dụng
Về mặt kỹ thuật, hàm này có thể được sử dụng để tạo danh sách liên kết phân trang cho bất kỳ khu vực nào. Đối số 'base'
được sử dụng để tham chiếu đến url, sẽ được sử dụng để tạo các liên kết phân trang. Đối số 'format'
sau đó được sử dụng để thay thế số trang. Tuy nhiên, theo mặc định, nó có khả năng được sử dụng trên các danh mục của bài viết.
Ví dụ
Với truy vấn tùy chỉnh
Khi truy vấn vòng lặp với WP_Query
mới, hãy gán giá trị thuộc tính max_num_pages
của đối tượng WP_Query
cho tham số total
.
<?php
//Bảo vệ chống lại các giá trị phân trang tùy ý
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
$args = array(
'posts_per_page' => 10, //số lượng bài viết trong mỗi trang
'category_name' => 'gallery',
'paged' => $paged, //lấy các bài viết ở trang $paged
);
$the_query = new WP_Query( $args );
?>
<!-- the loop etc.. -->
Dùng hàm paginate_links
hiển thị danh mục với các tham số được điều chỉnh theo truy vấn tùy chỉnh ở trên:
<?php
$big = 999999999; // need an unlikely integer
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $the_query->max_num_pages
) );
?>
Cải thiện khả năng truy cập:
Để thêm ngữ cảnh vào các liên kết được đánh số nhằm đảm bảo người dùng trình đọc màn hình hiểu mục đích của các liên kết:
<?php
global $wp_query;
$big = 999999999; // need an unlikely integer
$translated = __( 'Page', 'mytextdomain' ); // Supply translatable string
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $wp_query->max_num_pages,
'before_page_number' => '<span class="screen-reader-text">'.$translated.' </span>'
) );
?>
Tham khảo: https://codex.wordpress.org/Pagination