首先感谢阿邙童鞋的折腾:《WordPress嵌套评论之无限嵌套之补遗》,重复内容此文会简单带过,不懂可查看阿邙详细原文。

WP默认嵌套评论最大深度是8层,可在特殊情况下,比如小站昨天开启了《喜迎小站二周年,评论有奖活动》,好多淫表示套不够用了,这个问题很是严重,大大打击了各位淫的兴头。

经过努力,郑重呼喊:小站套已充足,淫们尽情吧!

代码折腾正文,分三大步走:

一、增大嵌套层数

在comments.php评论回调函数添加“&max_depth=10000”,即嵌套层数改为10000

 
<?php wp_list_comments('type=comment&callback=mytheme_comment&max_depth=10000'); ?>

二、样式控制代码

以防嵌套多了后缩进太多,评论太挤,我们要做的就是一定层数后不缩进,使其看上去并列显示。

在functions.php内回调评论函数内找到类似:

 
<li <?php comment_class(); ?> id="comment-<?php comment_ID() ?>">

修改成下句代码,其中9和margin-left,共同控制使9层以后不缩进。

 
<li <?php comment_class('clearfix'); ?><?php if( $depth > 9){ echo ' style="margin-left:-35px;"';} ?> id="comment-<?php comment_ID() ?>" >

完成一、二两步后,无限嵌套已经是很正常使用了,有个问题也随之出现,9层以后的都是并列按照层次显示,这时就分不清哪条是回复哪条的了。解决方案很简单:

三、添加”回复”输入框自动增加”@用户名”

此功能依旧使用强大的jQuery,以下代码已改进,只在某层数之后才添加。

 
//某层数之后,点击回复输入框自动添加"@用户名" By ImMmMm.com
 
$('.depth-8').children('.children').find('.reply').click(function(){ //class=".depth-8"子元素class=".children"下的class=".reply"的点击事件,注意:模板不同HTML结构可能不同,需调整!
 
	var rid= $(this).parent().attr("id"); //取得所回复的评论id,可能需要调整!
 
	var rna= $(this).next().text(); //取得所回复的评论用户名,可能需要调整!
 
	$("#comment").attr("value","<a href='#"+rid+"'>@"+rna+"</a> ").focus(); //在输入框添加"@用户名"和链接
 
});
 
$('#cancel-comment-reply-link').click(function() {
 
		$("#comment").attr("value",''); //点击取消回复时清空输入框
 
});

至此,搞定,收工!