文章标题旁显示 12 条评论,点进去实际有 27 条,回复全没算进去,按评论数排序的文章列表也跟着错位。日志里能对上时间点,这种反而好排。
comment_count 字段只统计顶层评论,子回复单独挂父级,默认不进这个数。主题调用 get_comments_number 时也没加参数,取到的就是顶层数。排序和展示用两套数据源时,差异会更明显。这一点先确认清楚,后面就不用反复试。
$total = get_comments(array( 'post_id' => get_the_ID(), 'status' => 'approve', 'count' => true, ));
「评论数统计」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
处理上按这个顺序:先确认列表页和详情页取的是同一个函数,两个地方口径不一致最难解释;需要含回复的总数就用 get_comments 按 post_id 统计,别直接读 comment_count;排序若依赖评论数,把排序值改成实时统计并加缓存,否则列表顺序会跳。
结果对不对很好判断,文章页显示的评论数和列表里的实际条数一致,回复也算在内。
