正在将Pages_Links()的‘end_Size’设置为无

时间:2016-08-31 作者:Harry Francis

我正在使用paginate\\u links()函数,并尝试以这种方式创建分页;

<;3 45 6 7>

从逻辑上讲,我认为将end\\u size设置为0,mid\\u size设置为2会很简单。

我已经这样做了,但我的代码是这样输出的;

<;1.3 45 6 7。。。9>

对我来说,这是将end\\u大小显示为1,即使我将其设置为0(除非我误解了该选项的作用)。

我当前的分页链接函数如下所示;

$paginationArgs = array(
    \'base\'          => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
    \'format\'        => \'?paged=%#%\',
    \'current\'       => max( 1, get_query_var(\'paged\') ),
    \'total\'         => $loop->max_num_pages,
    \'end_size\'      => 0,
    \'mid_size\'      => 1,
    \'prev_next\'     => TRUE,
    \'prev_text\'     => \'<\',
    \'next_text\'     => \'>\',
    \'type\'          => \'list\',
    \'add_args\'      => FALSE,
    \'add_fragment\'  => \'\'
)
$pagination = paginate_links($paginationArgs);
有人有什么建议/答案吗?

谢谢你,哈里。

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

这里有一个建议:

首先我们需要让paginate_links() 返回数组而不是HTML列表:

\'type\' => \'array\',
然后我们可以通过以下方式获取输出:

$paginate_links = paginate_links( $paginationArgs );
然后计划过滤掉想要的链接。

让我们获取当前值:

$c = $paginationArgs[\'current\'];
我们将搜索过滤器构造为:

$allowed = [
    \' current\',
    \'prev \',
    \'next \',
    sprintf( \'/page/%d/\', $c-2 ),
    sprintf( \'/page/%d/\', $c-1 ),
    sprintf( \'/page/%d/\', $c+1 ),
    sprintf( \'/page/%d/\', $c+2 )
];
请注意,我们可以围绕边缘对其进行优化,并仅过滤可用的内容。也可以根据mid_size 属性在此,我们假设:

\'mid_size\' => 2,
还要注意:

\'end_size\' => 0,
意味着end_size 是1,因为以下签入paginate_links() 核心功能:

if ( $end_size < 1 ) {
    $end_size = 1;
}
然后过滤允许的分页链接:

$paginate_links = array_filter(
    $paginate_links,
    function( $value ) use ( $allowed ) {
        foreach( (array) $allowed as $tag )
        {
            if( false !== strpos( $value, $tag ) )
                return true;
        }
        return false;
    }
);
最后,我们显示结果:

if( ! empty( $paginate_links ) )
    printf(
        "<ul class=\'page-numbers\'>\\n\\t<li>%s</li>\\n</ul>\\n",
        join( "</li>\\n\\t<li>", $paginate_links )
    );
希望您能根据自己的需要进行调整!