paginate_links WP function

时间:2016-07-14 作者:DekiGk

我很难理解paginate_links 作品我已经阅读了文档并使用了一百次,但我仍然没有完全理解。尤其是“base”属性。更确切地说,我有:

\'base\'          => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
正在将/page/2添加到URL。然后我将其更改为:

\'base\'          => @add_query_arg(\'paged\',\'%#%\'),
现在它添加了一个GET参数,如下所示:&;分页=5

有没有人可以将我链接到教程或解释,说明不同的属性如何改变函数的行为,以及它们如何创建实际的分页?

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

因此,该函数的目的并不是很难:生成一组total 大小与current page和一些漂亮的部分。

问题是URL的配置方式非常。。。原件和documentation 无法准确描述发生了什么。

文档表明这些是默认的baseformat 参数:

echo \'<pre>\', esc_html( paginate_links( [
    \'base\'    => \'%_%\',
    \'format\'  => \'?page=%#%\',
    \'current\' => 1,
    \'total\'   => 3,
    \'type\'    => \'plain\',
] ) ), \'</pre>\';

<span class=\'page-numbers current\'>1</span>
<a class=\'page-numbers\' href=\'?page=2\'>2</a>
<a class=\'page-numbers\' href=\'?page=3\'>3</a>
<a class="next page-numbers" href="?page=2">Next »</a>
事实并非如此。默认值baseformat 根据站点的配置动态生成。对于我的开发站点,它们是这样的:

echo \'<pre>\', esc_html( paginate_links( [
    \'base\'    => \'http://dev.rarst.net/%_%\',
    \'format\'  => \'page/%#%/\',
    \'current\' => 1,
    \'total\'   => 3,
    \'type\'    => \'plain\',
] ) ), \'</pre>\';

<span class=\'page-numbers current\'>1</span>
<a class=\'page-numbers\' href=\'http://dev.rarst.net/page/2/\'>2</a>
<a class=\'page-numbers\' href=\'http://dev.rarst.net/page/3/\'>3</a>
<a class="next page-numbers" href="http://dev.rarst.net/page/2/">Next »</a>
那么那里发生了什么?有两件事:

  1. %#% 在里面format 替换为当前页码%_% 在里面base 替换为格式结果
第页的So2:

  1. 2 + page/%#%/ = page/2/
  2. page/2/ + http://dev.rarst.net/%_% = http://dev.rarst.net/page/2/
其余的参数处理“漂亮”的东西,比如拆分成段之类的(这样你就不会实际显示1000页的1000个链接)。

因此,我想总结一下:该函数非常灵活,允许构建非常不同的分页方案。但你真的需要有明确的目标baseformat 正确地

例如,有一些更高级别的包装器,这些包装器是稍后添加的,并且更特定于任务the_posts_pagination().

相关推荐

change pagination url

目前,我的分页页面URL为:http://www.example.com/category_name/page/2但我需要将此URL结构更改为:http://www.example.com/category_name/?page=2等有什么解决方案吗?