首页 > 分类 > 网络百科 > 文章内容

弃用文章评论 ajax 翻页功能

为了“现代化评论回复链接的 JavaScript 代码”(Modernise JavaScript for comment reply links),自 5.0-alpha-42360 起,WordPress 修改了 get_comment_reply_link() 函数,及操作评论表单的 comment-reply.js 文件。查看代码变化,这些修改包括向评论回复链接的 <a> 标签中添加了 data-commentid、data-postid 等属性,并取消了把 addComment.moveForm() 放在内联 onclick 属性里输出的方式,转而作为点击事件添加到 comment-reply.js 中。

这么说显得略抽象,可以对比下修改前后评论回复链接的 html 代码输出差异,主要区别在第二行,<a> 标签的开始标签中,即下面蓝色高亮行。

改版前:

<span class="reply">
	<a rel='nofollow' class='comment-reply-link' href='https://www.syshut.com/great-heat?replytocom=34#respond' onclick='return addComment.moveForm( "div-comment-34", "34", "respond", "1306" )' aria-label='Reply to flippy'>
		回复
	</a>
</span>

改版后:

<span class="reply">
	<a rel='nofollow' class='comment-reply-link' href='/great-heat?replytocom=34#respond' data-commentid="34" data-postid="1306" data-belowelement="div-comment-34" data-respondelement="respond" aria-label='Reply to flippy'>
		回复
	</a>
</span>

这次修改直接导致了我目前在用的评论表单系统出现了两个问题:一是点 [ 回复 ] 按钮,不能将评论输入框移动到相应的回复位置,二是评论 ajax 翻页后连评论回复的链接也变成了 /wp-admin/admin-ajax.php 这个路径,没办法正常获得评论回复框。通过对比内置主题 Twenty Seventeen 发现,第一个问题比较好解决,只要在开启嵌套评论的文章及页面中 enqueue 出 comment-reply.js 就可以了:

if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
	wp_enqueue_script( 'comment-reply' );
}

目前用的评论 ajax 翻页功能参照 fatesinger.com 的 WordPress Ajax 评论分页/翻页这篇文章修改。说实在的,对代码一窍不通,所以当初修改的时候都搞的晕头转向,想自己修复代码就更是天方夜谭了。借助他人之力吧,因为这个问题理论上会在所有使用这种方式给评论翻页的 WP 站点上出现,而大神们发现这个问题,怎么也要等到正式版发布后再过一段时间。立即去官方看了下 WordPress 5.0 的发布计划:

好样的!一切都是 To Be Determined(待定)。嗯,第二个问题的解决遥遥无期,因此干脆决定,暂弃文章评论 ajax 翻页功能,将相关的 js 和 php 代码全部注释掉,等到有大神给出解决方案后再视情况取舍吧。

您可能还会对这些文章感兴趣
评论总数 7(访客评论 4 / 作者评论 3)
    • @chenlun 对,就是评论多了显示太长的那个分页。确实,我现在设置每超过 6 条评论开始分页,也还是没多少文章需要评论分页的..

发表评论

您的电子邮箱地址不会被公开。必填项已用 * 标注

你好,新朋友!

emojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemoji