使用PAGINATE_Links()生成“01,02,03,04”分页

时间:2017-02-04 作者:ttn_

我有这个密码

$format = $GLOBALS[\'wp_rewrite\']->using_index_permalinks() && ! strpos( $pagenum_link,
            \'index.php\' ) ? \'index.php/\' : \'\';
        $format .= $GLOBALS[\'wp_rewrite\']->using_permalinks() ? user_trailingslashit( \'page/%#%\',
            \'paged\' ) : \'?paged=%#%\';

        /*Set up paginated links.*/
        $links = paginate_links( array(
            \'base\'      => $pagenum_link,
            \'format\'    => $format,
            \'total\'     => $wp_query->max_num_pages,
            \'current\'   => $paged,
            \'mid_size\'  => 1,
            \'after_page_number\' => \'.\',
            \'add_args\'  => array_map( \'urlencode\', $query_args ),
            \'prev_text\' => \'\',
            \'next_text\' => \'\',
            \'type\'      => \'list\'
        ) );
它工作正常,但会生成分页,如“1、2、3、4…最后一个数字”

是否可以使用paginate\\u links()函数生成分页,如“01、02、03…19、20 Last Number”。

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

根据您的问题,您需要采取两个主要步骤:

Step 1: 而不是1, 2, 3, 4...Last Number 你需要1, 2, 3...19, 20, Last Number

Step 2: 您需要添加0 数字小于时分页编号中的前缀10, 即:01, 02, 03...19, 20, Last Number

这绝对可以使用paginate_links() 作用

步骤1的解决方案:

要确保从两端显示3个页码,需要使用以下属性:\'end_size\' => 3

步骤2的解决方案:确保数字小于10 前缀为0, 您需要使用过滤器挂钩:number_format_i18n


最终代码:

首先,将以下函数放置在functions.php 文件:

    /* Filter function to be used with number_format_i18n filter hook */
    if( ! function_exists( \'wpse255124_zero_prefix\' ) ) :
    function wpse255124_zero_prefix( $format ) {
        $number = intval( $format );
        if( intval( $number / 10 ) > 0 ) {
            return $format;
        }
        return \'0\' . $format;
    }
    endif;
然后,使用以下代码,而不是您在问题中提供的代码:

    $format = $GLOBALS[\'wp_rewrite\']->using_index_permalinks() && ! strpos( $pagenum_link,
            \'index.php\' ) ? \'index.php/\' : \'\';
    $format .= $GLOBALS[\'wp_rewrite\']->using_permalinks() ? user_trailingslashit( \'page/%#%\',
        \'paged\' ) : \'?paged=%#%\';

    add_filter( \'number_format_i18n\', \'wpse255124_zero_prefix\' );

    /*Set up paginated links.*/
    $links = paginate_links( array(
        \'base\'      => $pagenum_link,
        \'format\'    => $format,
        \'total\'     => $wp_query->max_num_pages,
        \'current\'   => $paged,
        \'mid_size\'  => 1,
        \'end_size\'  => 3,
        \'after_page_number\' => \'.\',
        \'add_args\'  => array_map( \'urlencode\', $query_args ),
        \'prev_text\' => \'\',
        \'next_text\' => \'\',
        \'type\'      => \'list\'
    ) );

    remove_filter( \'number_format_i18n\', \'wpse255124_zero_prefix\' );
现在您应该获得预期的分页。

相关推荐

Count posts for pagination

我正在为一个网站分页<;上一页(页码)下一页>很简单,已经完成。但是现在我需要添加一个选择器来直接转到页面(例如:转到第7页),要这样做,我需要知道有多少页面,为此我需要计算在查询中找到了多少帖子。问题是这个网站有太多的帖子(>13.000),查询所有帖子都会减慢页面加载速度,这就像。。。10秒后页面才能加载。显然,这是不可接受的。分页解决了这个问题,因为一次只加载50或100篇文章,但我无法将它们全部计算在内。我可以在不加载的情况下统计某个查询中的帖子吗?或者我可以通过其他方式获得页数吗