问题描述
我使用 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。