Cách xóa_query_arg () cho paginating_links ()


7

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ì $querybê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()?

Câu trả lời:


11

Không chắc chắn nếu bạn có nghĩa là loại phương pháp này:

add_filter( 'paginate_links', function( $link )
{
    return  
       filter_input( INPUT_GET, 'from_expired' )
       ? remove_query_arg( 'from_expired', $link )
       : $link;
} );

để xóa from_expiredliên kết phân trang nếu trong truy vấn GET hiện tại.


Không cần thiết làm thế nào tôi có nghĩa là nó. Một giải pháp làm việc là cần thiết. +1 cho giải pháp. Làm việc trên hit đầu tiên. Cảm ơn rất nhiều :)
Mayeenul Hồi giáo

Có thể có một cách chỉ áp dụng điều này cho chức năng phân trang tùy chỉnh của bạn, trước tiên tôi quên a; nhưng tôi đã thêm nó vào mã, vì vậy bạn có thể đã thử phiên bản cố định. Rất vui khi biết nó phần nào hiệu quả với bạn ;-) @MayeenulIslam
birgire

Tôi đã sao chép khái niệm, không phải bản thân mã - đó có thể là vấn đề. ;-)
Mayeenul Hồi giáo

1
Nghe có vẻ như là một lời khuyên chung chung về cách sử dụng trang web này, về mặt khái niệm ;-) @MayeenulIslam
birgire
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.