今天早上闲着无聊点了一下 WordPress 更新按键,从 5.0.3 更新到了 5.1,没想到出现了评论回复按键失效的问题,瞬间懵逼,因为电脑不方便联网根本没法排查故障,结果 bug 挂了一整天=.=
回来仔细看了一下,发现问题是因为 WP 更新了 comment-reply-link()
函数的输出。原本输出的 reply 按键,其 HTML 标签带有一个 onclick
事件,绑定了 addComment.moveForm()
事件,Sakura 主题、以及正在写的 Gorgeous 主题评论回复都利用了这个 onclick
事件,而在 WP 5.1 中,这个 onclick
事件被移除了,如图,上方的是 WP 5.1,下方是 WP 5.0:
因此修复这个问题的方法就是为 reply 按键添加一个 click 事件监听器。以 Sakura 主题为例,用 jQuery 实现:
$('body').on('click', '.comment-reply-link', function(){
addComment.moveForm( "comment-"+$(this).attr('data-commentid'), $(this).attr('data-commentid'), "respond", $(this).attr('data-postid') );
return false; // 阻止 a tag 跳转,这句千万别漏了
});
对于 WP 这个改动的出发点我觉得挺好,因为总感觉 inline 的 onclick 事件挺 low 的(虽然 Sakura 主题里面用了不少23333),不过忽然这样毫无征兆和说明地取消原有接口挺不好,WP 本应提供一个 hook 让我们可以自由地决定是否保留原有方法,不是吗?
「樱花庄的白猫」原创文章:《修复 WordPress 5.1 评论回复按键失效问题》,转载请保留出处!https://2heng.xin/2019/02/23/fix-wordpress-5-1-comment-reply-link-onclick-event/
Q.E.D.
Comments | 61 条评论
不错啊,自己动手丰衣足食
老哥稳
不完全正确哦,moveForm的最后一个参数应该是postId而不是1
@Shawn 是的,谢谢提醒!![](https://jsdelivr.2heng.xin/gh/moezx/cdn@2.9.4/img/bili/weixiao.png)
老哥稳~
老哥稳![](https://jsdelivr.2heng.xin/gh/moezx/cdn@2.9.4/img/bili/xieyanxiao.png)
想要封面图片![](https://jsdelivr.2heng.xin/gh/moezx/cdn@2.9.4/img/bili/tiaopi.png)
@桜庭夜
![](https://jsdelivr.2heng.xin/gh/moezx/cdn@3.0.2/img/svg/loader/trans.ajax-spinner-preloader.svg)
不错,支持一下
博主看来一直在尝试用Diaspora构建主题,左右滑确实很美,希望能兼容手机,期待它的发布!
@Time's Apprentice Diaspora是什么?![](https://jsdelivr.2heng.xin/gh/moezx/cdn@2.9.4/img/bili/xiaoku.png)
@Mashiro 啊,一个wordpress主题![](https://jsdelivr.2heng.xin/gh/moezx/cdn@2.9.4/img/bili/dalao.png)
具体在哪添加呢
@随笔美文 主题js里面,sakura主题已经更新过啦
博主,请问下图红圈里的东西在哪个文件里添加啊,主题文件翻了个遍也没找到
![](https://jsdelivr.2heng.xin/gh/moezx/cdn@3.0.2/img/svg/loader/trans.ajax-spinner-preloader.svg)
@regulation 添加联系方式就好
@regulation 主题>Sakura主题设置>社交栏
@故人 不是啊,我这个是手机侧栏,我把社交栏里的都填满了,手机侧栏上也没出现
期待新主题~ Gorgeous~![](https://jsdelivr.2heng.xin/gh/moezx/cdn@2.9.4/img/bili/qinqin.png)
@蝉時雨 不知不觉又搁置了个把月,毕业季忙死了
(/TДT)/
我上传的文件放在阿里云的oss,wp统计插件启用就一直不停请求oss,获取ip数据库…博主有遇到过这种情况吗
@monian 我的所有站源数据都是放在一起的,没有遇到过。。
请问这个代码要怎么用
小白不懂
@12121212112 放在主题js里面就可以了