前几天后台升级到 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 一致,否则评论表单框能跟随,但是无法嵌入在对应评论内。
目测问题解决,凑合着用吧。
本文首发于:WordPress 5.1,累……-垃圾站
还没升级,先收藏,希望用不上
@从良未遂 升级了也不一定能用得上,有些主题本身就没有用 comment_reply_link 这东东。
自己写吧,也是一个学习的机会,其实博客不用多少代码的。
@tk 自己写?目前真心折腾不来。
收藏了。
nnd,想不到我也中招了。
改!
@老虎 只要用到 comment_reply_link 都会中招。
@老头 用回大发的Puma主题,发现竟然找不到comment_reply_link……一晚上不知道怎么搞。
@老虎 额,Puma 貌似没有自定义评论回调函数,用 JS 版应该可以:https://cyhour.com/1046/
我说失效了吧,还不信?。
@灰常记忆 ajax 提交没有失效。
所以我已经选择不升级了。
@郑永 吃枣要升级……
@老头 期待它给我升级的理由~
@老头 如你所说,最终还是升级,哈哈。
@郑永 迟早忍不住的,哈哈。除非不折腾。
我还在用4.9
@楚狂人 迟早要升级吧
高手。wordpress我感觉还是很难搞,宝塔的cpu飙升
@hua.ge 那就不要塔……
收藏应用了,这就是我要的菜。
@林三 嗯,更新一下应该就好了。
我真想痛骂wp团队,是吃屎的吗,找那么多事情来做。。。
@老虎 这个……升级嘛,难免。