Tôi đã thực hiện phân trang bằng cách sử dụng paginate_links()
như dưới đây:
<?php
function wpse229670_pagination( $query = false ) {
global $wp_query;
$query = $query ? $query : $wp_query;
$total_pages = $query->max_num_pages;
$big = 999999999;
if ( $total_pages > 1 ) {
echo '<nav class="navigation posts-navigation" role="navigation">';
echo '<strong>'. __( 'Pages:', 'text-domain' ) .'</strong> ';
echo paginate_links( array(
'base' => ,
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $total_pages
) );
echo '</nav>';
} //endif ( $total_pages > 1 )
}
Và tôi có thể dễ dàng hiển thị phân trang của mình bằng wpse229670_pagination();
vòng lặp trong hoặc cho bất kỳ vòng lặp tùy chỉnh nào, tôi có thể chuyển truy vấn cục bộ dưới dạng tham số.
Nó hoạt động tốt.
Kịch bản là, tôi đang thêm một số đối số truy vấn như thế này để hiển thị cảnh báo phương thức cho người dùng:
$terms = wp_get_post_terms( $post_id, 'my_tax' );
$term_link = get_term_link( $term_id, 'my_tax' );
$parameterized_url = add_query_arg( 'from_expired', 1, $term_link );
wp_redirect($parameterized_url);
exit;
Nhưng các liên kết phân trang tiếp tục hiển thị cảnh báo, vì tôi không thể remove_query_arg()
truy vấn và các trang sau cũng chứa đối số.
Tôi nghĩ sẽ tốt hơn nếu tôi có thể loại bỏ query_args cần thiết trong hàm phân trang của mình. Bạn biết tôi không thể làm:
//$query = remove_query_arg( 'from_expired', $query );
bởi vì $query
bên trong chức năng của tôi là một đối tượng.
Vì vậy, làm thế nào tôi có thể remove_query_arg()
từ một $wp_query
đối tượng hoặc từ paginate_links()
?