paginate_links() | WordPress自定义查询分页函数

作者猫斯基 2015-02-08 87 人读过

最新文章

函数

/*
 * 自定义查询分页函数
 * @author WordPress迷
 * @url https://maosiji.com/wpkaifa/8946.html
 * */
$args = array(
	'base'         => '%_%',            // 用来参考的网址
	'format'       => '?page=%#%',      // 用于 URL 的分页结构,例如: /page/3
	'total'        => 1,                // 总页数
	'current'      => 0,                // 当前页码
	'show_all'     => False,            // 默认值是 false,如果设置为 true,那么将显示所有的可用页码
	'end_size'     => 1,                // 页面显示在列表的末尾号
	'mid_size'     => 2,                // 多少个数字到当前页面的两侧,但不包括当前页面
	'prev_next'    => True,             // 布尔值,是否包含上一页和下一页的链接
	'prev_text'    => __('? Previous'), // 前一页的文字。只有当’prev_next’参数设置为 true 时有效
	'next_text'    => __('Next ?'),     // 下一页的文字。只有当’prev_next’参数设置为 true 时有效
	'type'         => 'plain',          // 定义该函数返回什么,plain, array 或 list
	'add_args'     => False,            // 添加查询字符串参数到链接
	'add_fragment' => '',               // 添加文本追加到每个链接
	'before_page_number' => '',         // 在页码前显示的字符串
	'after_page_number' => ''           // 在页码后显示的字符串
);
echo paginate_links( $args );

描述

WordPress 函数 paginate_links() 用于任何自定义查询结果的主循环分页,包括 post 列表或自定义文章类型列表,或者文章存档分页、评论分页以及自定义数据等,比如想调用指定用户的所有评论并实现分页就可以通过 paginate_links() 函数实现。

参数

  • base – (字符串)(可选)用于引用的 URL,被用来创建分页链接, 默认值“%_%”,如“http://example.com/all_posts.php%_%”,如果设置了 format 参数,则无效
  • format – (字符串)(可选)用于 URL 的分页结构,默认值 “?page=%#%”,如果使用了伪静态,则是“/page/%#%”,“%#%”表示页面,例如:/page/3
  • total – (整数)(可选)总页数,默认值为 1
  • current – (整数)(可选)当前页码,默认值为 0
  • show_all – (布尔)(可选)是否显示所有页面,默认值是 false,如果设置为 true,设置为 false,则调用 end_sizemid_size 的设置
  • end_size – (整数)(可选)分页列表两边各显示多少个页码,默认值为 1
  • mid_size – (整数)(可选)当前页面页码两边的页码数量,不包括当前页码,默认值为 2
  • prev_next – (布尔)(可选)是否包含上一页和下一页的链接,默认值 true
  • prev_text – (字符串)(可选)前一页的文字,“prev_next”参数设置为true时生效,默认值 __(‘« Previous’)
  • next_text – (字符串)(可选)下一页的文字,“prev_next”参数设置为 true 时生效,默认值 __(‘Next »’)
  • type – (字符串)(可选)控制返回值的格式,plain、array 或 list,默认值 plain
  • add_args – (数组)(可选)添加查询字符串参数到链接,默认值 false
  • add_fragment – (字符串)(可选)添加文本追加到每个链接,默认值 None
  • before_page_number – (字符串)(可选)在页码前显示的字符串,默认值 None
  • after_page_number – (字符串)(可选)在页码后显示的字符串,默认值 None

例子

global $wp_query;
$big = 999999999; // need an unlikely integer
echo paginate_links( array(
	'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
	'format' => '?paged=%#%',
	'current' => max( 1, get_query_var('paged') ),
	'total' => $wp_query->max_num_pages
));

调用指定用户的评论列表并分页

$total = $wpdb->get_var("
	SELECT COUNT(comment_ID)
	FROM $wpdb->comments
	WHERE user_id = $thisauthor->ID
	AND comment_post_id = ID
	AND comment_approved = 1
");
$comments_per_page = 10;
$page = isset( $_GET['cpage'] ) ? abs( (int) $_GET['cpage'] ) : 1;
$nowPage = isset( $_GET['cpage'] ) ? abs( (int) $_GET['cpage'] ) : 1;
$offset = ($nowPage-1)*$comments_per_page;
$comments = $wpdb->get_results("select * from $wpdb->comments where comment_approved = '1' AND user_id =".$user_ID." ORDER BY comment_date_gmt DESC limit ".$offset.",".$comments_per_page);
foreach ($comments as $comment) {
	echo $comment->comment_content;
}
echo paginate_links( array(
	'base' => add_query_arg( 'cpage', '%#%' ),
	'format' => '',
	'prev_text' => __('«'),
	'next_text' => __('»'),
	'total' => ceil($total / $comments_per_page),
	'current' => $page
));
//The example is from http://wordpress.stackexchange.com/questions/3318/

官方文档

https://codex.wordpress.org/Function_Reference/paginate_links

本文由 猫斯基 原创发布。

著作权均归用户本人所有。独家文章转载,请联系本站管理员。获得授权后,须注明本文地址! 本文地址:https://maosiji.com/wordpress/wordpress-paginate_links.html