使用 WP Comment Query 建立带分页功能的自定义评论列表


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 的各种查询类都已经很好的支持了创建分页数据所需要的参数,只要我们给响应的参数提供适当的数据即可,下次遇到类似需要的时候,可以动手尝试一下。

  • 分享:
评论
还没有评论
    发表评论 说点什么