問題描述

我使用 paginate_links()實現了分頁,如下所示:

<?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 )

}

我可以使用循環中的 wpse229670_pagination(); 輕鬆顯示我的分頁,或者對於任何自定義循環,我可以將本地查詢作為參數傳遞。

工作正常

場景是,我添加了一些這樣的查詢 args 來向用户顯示模態警告:

$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;

但分頁鏈接繼續顯示警告,因為我不能從查詢 remove_query_arg()和以下頁面包含參數。

我認為如果我可以在我的分頁功能中刪除必要的 [一次性] query_args 會更好。你知道我不能做:

//$query = remove_query_arg( 'from_expired', $query );

因為 $query 裏面的我的函數是一個對象。

那麼 remove_query_arg()如何從 $wp_query 對象或 paginate_links()

最佳解決方案

不確定你是否意味着這種做法:

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

如果它在當前的 GET 查詢中,從分頁鏈接中刪除 from_expired

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。