本部分:
\'base\' => str_replace( 999999999, \'%#%\', esc_url( get_pagenum_link( 999999999 ) ) ),
正在生成
page
像这样的部分:
\'base\' => http://example.tld/page/%#%/
如果我们偷看
paginate_links()
我们看到默认值:
\'base\' => $pagenum_link, // http://example.com/all_posts.php%_% :
// %_% is replaced by format (below)
\'format\' => $format, // ?page=%#% : %#% is replaced by the page number
其中内联注释表示
%_%
替换为格式。
文件还指出:
的示例‘base’
参数为"http://example.com/all_posts.php%_%"
以及‘%_%’
是必需的。这个‘%_%’
将替换为中的内容‘format’
论点示例‘format’
参数为"?page=%#%"
并且还需要“%\\%”。这个‘%#%’
将替换为页码。
如果我们使用:
\'base\' => \'%_%\'
然后它将与
format
论点
以下是OP示例的修改:
echo paginate_links(
[
\'base\' => \'%_%\',
\'total\' => $query->max_num_pages,
\'current\' => $current,
\'format\' => \'?p-page=%#%\',
\'show_all\' => false,
\'type\' => \'plain\',
\'end_size\' => 2,
\'mid_size\' => 1,
\'prev_next\' => true,
\'prev_text\' => \'<i></i> <i class="icon-chevron-left"></i>\',
\'next_text\' => \'<i class="icon-chevron-right"></i> <i></i>\',
\'add_args\' => false,
\'add_fragment\' => \'\',
]
);
我们使用的地方:
$current = max( 1, (int) filter_input( INPUT_GET, \'p-page\' ) );
这也将进入
WP_Query
的参数
$query
:
\'paged\' => $current,
的输出示例
?p-page=6
:
<a class="prev page-numbers" href="?p-page=5"><i></i> <i class="icon-chevron-left"></i></a>
<a class=\'page-numbers\' href=\'\'>1</a>
<a class=\'page-numbers\' href=\'?p-page=2\'>2</a>
<span class="page-numbers dots">…</span>
<a class=\'page-numbers\' href=\'?p-page=5\'>5</a>
<span class=\'page-numbers current\'>6</span>
<a class=\'page-numbers\' href=\'?p-page=7\'>7</a>
<span class="page-numbers dots">…</span>
<a class=\'page-numbers\' href=\'?p-page=99\'>99</a>
<a class=\'page-numbers\' href=\'?p-page=100\'>100</a>
<a class="next page-numbers" href="?p-page=7"><i class="icon-chevron-right"></i> <i></i></a>
附言:没有必要
sprintf
组合两个静态字符串,正如我们在
prev_text
和
next_text
. 目前,该部分在原始代码段中看起来是错误的,因此我将其删除。
希望有帮助!