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

文 / @WordPress主题

如何使用 WPCommentQuery 类建立带分页功能的自定义评论列表

WPCommentQuery 是 WordPress 用来查询评论的类,在本站之前的文章 WordPress 评论查询类 WPCommentQuery 参考文档 中,我介绍了 WPCommentQuery 类的详细参数,使用 WPCommentQuery 类,我们可以实现各种各样的评论查询,下面,我们来看一下怎么用 WPCommentQuery 类建立带分页功能的自定义评论列表。

首先,获取评论分页需要的数据

首先,我们需要获取评论分页所需要的数据,包括总评论数量、每页显示的评论数量、当前页数这三个数据。

$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;

// 评论查询类 WPCommentQuery 的参数
$args = [
    'user_id' => $user->ID,
    'number' => $number,
    'offset' => $offset,
];

// 评论查询实例
$comments_query = new WP_Comment_Query($args);
$comments = $comments_query->comments;

// 当前获取的评论数据
$current_count = count($comments);

显示 WPCommentQuery 查询到的评论

也就是评论列表里面显示的评论内容,可以有评论作者头像、评论作者昵称等数据,因为作为示例使用,这里就不再输出详细的数据了,只输出评论内容作为演示。

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

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。