如何在Wordpress分页中显示帖子范围而不是页码?

时间:2015-10-15 15:00:00

标签: php wordpress pagination

如何输出每个分页步骤中包含的帖子范围而不仅仅是当前页码?

我的意思是: 1-10 11-20 21-30 31-40 ... 101-110下一步

代替: 1 2 3 4 5 6 .. 10下一步

我目前的分页功能:

myTab

2 个答案:

答案 0 :(得分:0)

不幸的是,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函数作为示例。

答案 1 :(得分:0)

对于仍在寻找实现这一目标的人。我就这样做了:

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

 }