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 '下一页'; }
显示数字分页链接
如果需要显示上一页和下一页链接,直接使用 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 的各种查询类都已经很好的支持了创建分页数据所需要的参数,只要我们给响应的参数提供适当的数据即可,下次遇到类似需要的时候,可以动手尝试一下。