如何为PAGINATE_LINKS()删除_QUERY_Arg()

时间:2016-06-14 作者:Mayeenul Islam

我使用实现了分页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(); 在循环内,或者对于任何自定义循环,我都可以将本地查询作为参数传递。

它工作得很好。

场景是,我添加了一些类似这样的查询参数,以向用户显示模式警告:

$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\\u参数会更好。你知道我做不到:

//$query = remove_query_arg( \'from_expired\', $query );
因为$query 在我的函数中是一个对象。

那么,我怎么能remove_query_arg() 来自$wp_query 对象或来自paginate_links()?

1 个回复
最合适的回答,由SO网友:birgire 整理而成

不确定您是指这种方法:

add_filter( \'paginate_links\', function( $link )
{
    return  
       filter_input( INPUT_GET, \'from_expired\' )
       ? remove_query_arg( \'from_expired\', $link )
       : $link;
} );
要删除from_expired 如果它在当前的GET查询中,则从分页链接。