Custom GET pagination parameter
我们可以使用自定义的GET分页参数,例如。
upage
或者可能更独特
wpse-user-page
, 与您的
WP_User_Query
. 这样可以避免影响主post查询。
Generate pagination links with pageinate_links()
我们可以使用
paginate_links()
要生成分页,请执行以下操作:
$args = array(
\'base\' => \'%_%\',
\'format\' => \'?upage=%#%\',
\'total\' => $total_pages, // e.g. ceil( $total_users / $number );
\'current\' => $current_page, // from our custom GET pagination parameter
);
$paginate_html = sprintf(
\'<div class="users-pagination">%s</div>\',
paginate_links( $args )
);
Where to display the user archive?
例如,我们可以使用短代码或自定义页面模板将其显示在给定页面上。
Prettify the user archive\'s pagination url
以下是修饰自定义GET分页参数的几种方法:
A) 将其作为自定义端点添加到具有以下内容的页面:
add_rewrite_endpoint( \'upage\', EP_PAGES );
把它挂在
init
操作,然后在保存永久链接后,从所有页面访问用户存档:
example.tld/authoes/upage/123/
example.tld/someotherpage/asubpage/upage/123/
... etc ...
然后,我们使用以下内容获取当前页面:
get_query_var( \'upage\', 1 );
B) 如果我们想针对给定的页段塞(例如。
authors
) 我们可以将以下内容连接到
init
挂钩:
add_rewrite_rule(
\'^authors/upage/?([0-9]{1,})/?$\',
\'index.php?pagename=authors&upage=$matches[1]\',
\'top\'
);
然后注册
upage
作为查询变量:
add_filter( \'query_vars\', function( $vars ) {
$vars[] = \'upage\';
return $vars;
} );
保存永久链接后,我们从以下位置访问用户存档:
example.tld/authors/upage/123/
C) 如果我们还可以覆盖
page
url部分,对应于
paged
查询变量,带:
add_rewrite_rule(
\'^authors/page/?([0-9]{1,})/?$\',
\'index.php?pagename=authors&upage=$matches[1]\',
\'top\'
);
我们注册的地方
upage
像以前一样作为查询变量。
保存永久链接后,我们可以从以下位置访问用户存档:
example.tld/authors/page/123/
D) 我们也可以使用
page
的查询变量
authors
通过以下方式分页并访问用户存档:
example.tld/authors/123/
其中当前页面为:
get_query_var( \'page\', 1 );
请注意,这会干扰内容分页,但对该查询变量没有限制检查。
E) 我们可以模拟core中如何处理注释分页,它使用如下重写:
(.?.+?)/comment-page-([0-9]{1,})/?$
在哪里
cpage
是的相应注释分页查询变量
([0-9]{1,})
火柴
或者,还可以考虑使用RESTAPI和javascript方法。core随wp-api Backbone client library 可以处理例如用户集合。
希望有帮助!