`
baiyuxiong
  • 浏览: 179281 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

【转载】WordPress 嵌套回复构成原理

阅读更多
http://www.neoease.com/wordpress-walker-comments/

在上一篇文章 (WordPress 嵌套回复) 中, 我已经介绍了嵌套回复的利弊, 制作方法等等. 本文将简单说明嵌套回复构成的原理.

本文中提及的 4 个方法均来自 Walker_Comment 类, 该类继承自 Walker, 是构建嵌套回复的核心部分. 另外, WordPress 中的子页面和子分类也是使用 Walker 的子类来实现的. 如果你想对 WordPress 的嵌套同能了解更多, 可以查阅 WordPress Codex 中关于 Walker 类的说明.

打开 wp-includes/comment-template.php, 查找 Walker_Comment 类. 以下展开介绍这 4 个方法.


start_lvl

子菜单列表的开始标签, 默认是 <ul>, 在第一个子条目之前生成.

end_lvl

对应 start_lvl 的子菜单列表的结束标签, 默认是 </ul>, 在最后一个子条目之后生成.

start_el

条目的前半部分, 包括开始符号和评论内容. 开始符号是 <div> 或者 <li> (外层是 ol 或 ul 的情况下是 <li>); 评论内容就是评论的相关信息显示, WordPress 向我们提供了可即用的布局, 但也可以通过 callback 方法改变评论内容的结构. 调用回调函数的部分代码示意如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
function start_el(&$output, $comment, $depth, $args) {
$depth++;
$GLOBALS['comment_depth'] = $depth;

// 如果定义了回调函数, 则调用其回调函数, 并终止后面的处理.
if ( !empty($args['callback']) ) {
call_user_func($args['callback'], $comment, $args, $depth);
return;
}

// 如果没有定义回调函数, 则执行本方法中后面的处理, 生成默认的评论布局.
...
}
我们所谓的自定义嵌套回复, 就是创建一个 callback 方法, 并在 wp_list_comments 方法中调用这个它生成自定义的评论结构. 也可以认为是定义一个新的方法, 取代 start_el 方法内部的默认布局.

end_el

条目的后半部分, 其实就一个结束符号. 这里也提供一个名为 end-callback 的回调方法, 原理和 start_el 一样, 是一个自定义的处理方式. 但是 end-callback 并不常用, 因为 end_el 只生成一个简单的结束符号, 实在没必要为此再定义一个方法.

我觉得只有在需要复杂的评论结构时, 才有必要用到 end-callback. 如: 要在评论的上方和下方都添加背景图效果, 评论框内可能需要多一个 DIV 层, 则可能用上 end-callback. 在 callback 方法中以 <div class="comment"><div class="inner"> 作为开始, 而 end-callback 中以 </div></div> 结束掉.

例子

下面我将以一个嵌套回复的例子来证明上述内容.

现有评论嵌套结构如下:

comment (1)

comment (1.1)

comment (1.2)

comment (1.2.1)

comment (2)

依照上述方法, 执行顺序如下:

start_el (1)
start_lvl (1)
start_el (1.1)
end_el (1.1)
start_el (1.2)
start_lvl (1.2)
start_el (1.2.1)
end_el (1.2.1)
end_lvl (1.2)
end_el (1.2)
end_lvl (1)
end_el (1)
start_el (2)
end_el (2)

假设方法配置都是默认的, 则:

start_lvl 为 <ul>
end_lvl 为 </ul>
start_el 为 <li> 和内容部分
end_el 为 </li>

又设 "..." 为评论内容, 则代码生成如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<li>
... (1)

<ul>
<li>
... (1.1)

</li>
<li>
... (1.2)

<ul>
<li>
... (1.2.1)

</li>
</ul>
</li>
</ul>
</li>
<li>
... (2)

</li>
分享到:
评论

相关推荐

    WordPress中非插件实现嵌套回复效果的方法

    博客吧转载了零号相册的Wordpress博客自带嵌套回复教程。 自带嵌套功能工作原理: wordpress嵌套回复的工作原理是WP的数据库里有个wp_comments的表中有一栏comment_parent ,即可以对comment指定父级,达到嵌套的...

    WordPress 嵌套回复 (优缺点对照)

    【WordPress 嵌套回复】是WordPress平台一种增强评论交互性的功能,允许用户对已有评论进行回复,并在视觉上形成层级结构,使对话更清晰、更具条理性。嵌套回复的引入,对于提升用户参与度和社区氛围具有积极影响。 ...

    WordPress 留言回复插件推荐WordPress Thread Comment

    •嵌套或成串显示相关讨论。 •无需对Wordpress和主题进行修改,便于安装。 •可于管理后台自定义的HTML、PHP和CSS。 •支持AJAX,无需刷新整个页面即可留言。 •可自由选择是否使用AJAX效果。 •还能如果管理员了...

    WordPress留言回复插件replyMail

    博客上有好的文章时,访客就会对相关的文章发表看法或者提出相关的问题,当我们回复或解答这个问题时,如果访客没有再次访问的话,他就不知道你的回复,这样的话,访客和博主之间的互动性也就减少了,也不利于和网友...

    WordPress工作原理

    WordPress工作原理,页面调用过程等

    Comment Reply Notification,WordPress留言回复通知插件.rar

    Comment Reply Notification 是一款WordPress留言回复通知插件,出自老外之手。这个插件的主要功能也是当您的博客上的留言有人回复的时候,就会有一封邮件通知用户他的留言有新的回复了。如果您不会使用,请查看...

    Wordpress Thread Comment(评论功能的增强插件)for Wordpress.rar

    本插件让用户能够对已有评论进行回复讨论,并将结果嵌套或成串显示。 功能特性 用户可以对已有评论进行回复讨论 嵌套或成串显示相关讨论。 无需对Wordpress和主题进行修改,便于安装。 W3C兼容。 可于管理...

    免费的wordpress微信插件-支持自定义菜单,自定义回复,兼容易信(微信日志phplogcom)

    微信日志是基于Wordpress的完全开源的微信插件,利用微信日志能很方便扩展微信公众号的功能。微信日志完美支持Wordpress的插件方式来扩展更多的功能。 功能介绍 记录用户的消息,支持回复预览 支持添加自定义回复 ...

    wordpress工作原理

    WordPress 工作原理 WordPress 是一个开源的内容管理系统(Content Management System),它的工作原理主要包括以下几个方面: 一、 WordPress 初始化过程 当用户输入 URL 并访问 WordPress 站点时,WordPress 会...

    wordpress 代码分析整理

    WordPress,作为全球最受欢迎的开源内容管理系统(CMS),其代码结构和原理对于开发者来说具有极高的学习价值。本文将基于提供的文件名,深入探讨WordPress的前端代码、主题开发、代码结构以及网站数据分析等方面的...

    wordpress系统源代码简约版

    这个"wordpress系统源代码简约版"可能去除了不必要的组件或优化了性能,对于学习WordPress工作原理、理解其架构或者进行二次开发非常有帮助。通过深入研究源代码,你可以了解到WordPress如何处理HTTP请求,如何执行...

    自动给被回复者发送邮件的插件ReplyMe插件 for Wordpress.zip

    3. 启用嵌套回复:为了使ReplyMe插件正常工作,需要确保你的WordPress网站已经启用了嵌套回复功能。这通常可以在评论设置中找到,启用后,评论可以形成层级结构,便于跟踪对话。 4. 禁用冲突插件:如果网站上已安装...

    WordPress 网站系统源码包 6.4.2

    WordPress 是一个广泛使用的开源内容管理系统(CMS),专为构建网站和博客而设计。6.4.2 版本是该平台的一个更新版本,发布于2023年12月7日,它提供了多项改进、修复和新特性,旨在提升用户体验和网站性能。 1. **...

    wordpress源码资源下载网带1200数据

    综上所述,这个资源包提供了一个完整的WordPress站点环境,包括了运行和扩展功能所需的组件,对于想要深入理解WordPress工作原理、开发自定义功能或快速建立新站点的用户来说,是一份宝贵的资源。同时,1200份资源...

    免费wordpress模板下载

    WordPress是一款广泛使用的开源内容管理系统,尤其在建立个人博客、企业网站和电子商务平台方面非常流行。免费的WordPress模板是用户入门和提升网站外观的关键资源。在本文中,我们将深入探讨“西瓜红色”的免费...

    人人都能学会的WordPress实战课

    通过学习这门课程,你将能够深入理解WordPress的工作原理,从而更好地管理、定制和扩展你的网站。 首先,我们将从基础入手,了解WordPress的基本架构和安装过程。这包括如何下载WordPress、选择合适的主机环境、...

    WordPress 4.9.4 简体中文

    WordPress简体中文版本。 下载压缩包到本地,解压缩,双击解开的文件夹中的readme.html文件,即可查看WordPress的介绍、安装,和升级方法。在您将程序文件上传至服务器相应目录后,安装过程只需5分钟。 已经在使用...

    wordpress

    通过这些核心文件,我们可以看到WordPress的核心功能和工作原理。了解这些文件的作用对于WordPress的定制化开发和故障排查至关重要。无论是进行主题开发、插件编写,还是日常的网站维护,对这些文件的理解都将大大...

    真正的WordPress帮助文档pdf版(中文)

    **WordPress帮助文档中文PDF版** 是一套全面的指南,涵盖了从初学者到高级用户的各个层次。这个资源集合了7个不同主题的PDF文件,旨在帮助用户深入理解和掌握WordPress的使用,无论你是刚接触WordPress的新手还是...

Global site tag (gtag.js) - Google Analytics