如何输出每个分页步骤中包含的帖子范围,而不仅仅是当前页码?
我的意思是:1-10-11 -20 21-30 31-40…101 - 110年的下一个
代替:1 2 3 4 5 6…接下来10
我的当前分页功能:
function wp_pagination() {
global $wp_query;
$total = $wp_query->max_num_pages;
$prev_arrow = is_rtl() ? '<span class="next">Next</i>' : '<span class="previous">Prev</span >';
$next_arrow = is_rtl() ? '<span class="previous">Prev</i>' : '<span class="next">Next</span >';
$big = 999999999;
if( $total > 1 ) {
if( !$current_page = get_query_var('paged') )
$current_page = 1;
if( get_option('permalink_structure') ) {
$format = 'page/%#%/';
} else {
$format = '&paged=%#%';
}
echo paginate_links(array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => $format,
'current' => max( 1, get_query_var('paged') ),
'total' => $total,
'mid_size' => 3,
'type' => 'list',
'prev_text' => $prev_arrow,
'next_text' => $next_arrow,
) );
}
}
遗憾的是,paginate_links
函数不允许更改显示页码的格式。
paginate_links
函数来源:https://core.trac.wordpress.org/browser/tags/4.3.1/src/wp-includes/general-template.php#L2742
下面一行负责生成页码:
$page_links[] = "<a class='page-numbers' href='" . esc_url( apply_filters( 'paginate_links', $link ) ) . "'>" . $args['before_page_number'] . number_format_i18n( $n ) . $args['after_page_number'] . "</a>";
可以看到,页码只是作为<a>
标签的内容插入,没有任何可能改变显示格式- number_format_i18n( $n )
要实现您的目标,您应该创建这个函数的自己的实现。以原wp paginate_links
函数为例
对于任何仍在寻找实现这一目标的方法的人。我是这样做的:
$links = paginate_links( array(
'base' => esc_url_raw( str_replace( 999999999, '%#%', remove_query_arg( 'add-to-cart', get_pagenum_link( 999999999, false ) ) ) ),
'format' => '',
'current' => max( 1, get_query_var( 'paged' ) ),
'total' => $query->max_num_pages,
'prev_next' => false,
'end_size' => 4,
'mid_size' => 4,
'type' => 'array',
));
$i = 0;
$current_page = max( 1, get_query_var( 'paged' ) );
foreach( $links as $link ){
$startrange = $i + 1;
$endrange = $i + 10;
// is active ?
if($links[$current_page-1] == $link){
echo preg_replace('/<span(.+?)>.+?<'/span>/i',"<span$1>$startrange - $endrange</span>",$link);
}else{
echo preg_replace('/<a(.+?)>.+?<'/a>/i',"<a$1>$startrange - $endrange </a>",$link);
}
$i += 10;
}