常阳时光

WordPress 5.1,累……

前几天后台升级到 WordPress 5.1,目测没有什么异样。不过回复评论时发现要点两次『回复』才能把 @xx 填进评论框,第一次点『回复』会刷新页面,第二次点才不会刷新。并且 comment-form 位置不会移动到要回复的评论下面。

对比了一下 WordPress 5.0.3 与 WordPress 5.1 源码,发现『回复』链接生成 comment_reply_link 函数和 comment-reply.js 文件都更新了。用了 ajax 提交评论,不需要用到 comment-reply.js。

会出现这个问题是因为新版 comment_reply_link 函数生成回复链接没有了 onclick:

$onclick = sprintf( 'return addComment.moveForm( "%1$s-%2$s", "%2$s", "%3$s", "%4$s" )',
$args['add_below'], $comment->comment_ID, $args['respond_id'], $post->ID
);

ajax 提交评论用的是大发版本,js 改不来,最简单是修改『回复』按钮。

<span class="reply">
<?php comment_reply_link( array_merge( $args, array( 'add_below' => $add_below, 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?>
</span>

改成:

<span class="reply">
<a class="comment-reply-link" href="javascript:;" onclick="return addComment.moveForm('comment-<?php comment_ID() ?>', '<?php comment_ID() ?>', 'respond', '<?php the_ID(); ?>')">回复</a>
</span>

注意:comment-<?php comment_ID() ?> 需与主题评论结构 li 里层的 id 或者 class 一致,否则评论表单框能跟随,但是无法嵌入在对应评论内。

目测问题解决,凑合着用吧。