3.2.19: 修复关闭 wpDiscuz 后评论列表整段不显示
现象:#5264 等文章标题「评论(4)」与输入框都在,但 <ol> 内 0 字节。 只有单页评论的文章必现,多页文章反而正常。 根因:3.2.18 给 wp_list_comments() 传了 page=1 / per_page=10, 进入核心的"独立查询"分支。当这两个值与核心自己推导的 current_cpage / comments_per_page 恰好相等时,内层 if 不成立, $_comments 一次都没被赋值(源码注释说会回退到 $wp_query->comments, 但那句注释下面没有回退代码),结果 paged_walk(null) 返回空串。 修复: - 新增 yang_comment_page():按顶层评论分页 + get_children() 展平子孙。 按顶层分页可避免父子被切到两页产生孤儿回复。 - comments.php 把结果当第二参数显式传给 wp_list_comments, 走 null !== $comments 分支,绕开有问题的推导。 连带修掉的三处: - Walker_Comment::end_el() 总会补 </li>,callback 再写一个导致 </li></li>,子容器被挤成父评论的兄弟节点、CSS 栅格失效。 yang_comment_html() 新增 $close_li,列表路径交给 walker 闭合。 - 核心 start_lvl() 固定输出 class="children",而样式表按 .yang-children 写,类名不符导致缩进/栅格全失效。 新增 Yang_Walker_Comment 覆盖 start_lvl()。 - AJAX「加载更多」原先只取顶层、只渲染顶层,吞掉全部子回复 (实测某篇 10 条顶层名下 12 条回复丢失)。改为走同一 walker, has_more 也改成与首屏同口径的顶层计数。
This commit is contained in:
Reference in New Issue
Block a user