WP Comment Query 是 WordPress 用来查询评论的类,在本站之前的文章WordPress 评论查询类 WP Comment Query 参考文档 中,我介绍了 WP Comment Query 类的详细参数,使用 WP Comment Query 类,我们可以实现各种各样的评论查询,下面,我们来看一下怎么用 WP Comment Query 类建立带分页功能的自定义评论列表。
首先,获取评论分页需要的数据
首先,我们需要获取评论分页所需要的数据,包括总评论数量、每页显示的评论数量、当前页数这三个数据。
$user = wizhi_get_current_user();
// 当前页码, 注意这里的查询参数,不能用paged,会和文章的分页参数冲突
$paged = isset( $_GET[ 'cmpage' ] ) ? $_GET[ 'cmpage' ] : 1;
// 总页数
$total = get_user_comments_count( $user->ID );
//每页显示的评论数量
$number = 6;
$offset = ( $paged - 1 ) * $number;
// 评论查询类 WP Comment Query 的参数
$args = [
'user_id' => $user->ID,
'number' => $number,
'offset' => $offset,
];
// 评论查询实例
$comments_query = new WP_Comment_Query( $args );
$comments = $comments_query->comments;
// 当前获取的评论数据
$current_count = count( $comments );
显示 WP Comment Query 查询到的评论
也就是评论列表里面显示的评论内容,可以有评论作者头像、评论作者昵称等数据,因为作为示例使用,这里就不再输出详细的数据了,只输出评论内容作为演示。
if ( $comments ) {
foreach ( $comments as $comment ) {
echo $comment->comment_content;
}
}
根据查询数据显示分页链接
直接显示下一页链接
如果不需要数字分页的方式,可以直接显示下一页的链接,显示上一页链接的方式类似。
// 如果当前获取的评论评论数量和每页显示的评论数量相等,说明不是最后一页,显示下一页链接。
if ( $number == $current_count ) {
echo '<a class="button" href="?tab=reply&paged=' . ( $paged + 1 ) . '">下一页</a>';
}
显示数字分页链接
如果需要显示上一页和下一页链接,直接使用 WordPress 的 paginate_links
函数即可,这个函数的使用在本站文章 WordPress 创建带分页功能的用户列表 中就有使用,在评论分页中的使用方法是类似的。
// 获取当前页面
$current_page = max( 1, $paged );
$max_num_pages = intval( $total / $number ) + 1;
// 显示分页链接
echo paginate_links( [
'base' => get_permalink( $pid ) . '%_%',
'format' => '?cmpage=%#%',
'current' => $current_page,
'total' => $max_num_pages,
'type' => 'list',
'prev_text' => __( '« 上一页' ),
'next_text' => __( '下一页 »' ),
'end_size' => 2,
'mid-size' => 3,
] );
其实在 WordPress 中,实现分页很简单,除了 WordPress 的各种查询类都已经很好的支持了创建分页数据所需要的参数,只要我们给响应的参数提供适当的数据即可,下次遇到类似需要的时候,可以动手尝试一下。