WordPress 评论回覆嵌套成果的组成道理

  本文中提及的4个要领均来自 Walker_Comment 类, 该类担任自 Walker, 是构建嵌套回覆的焦点部门。别的, WordPress 中的子页面和子分类也是利用 Walker 的子类来实现的。假如你想对 WordPress 的嵌套同能相识更多, 可以查阅 WordPress Codex 中关于 Walker 类的说明。

  打开 wp-includes/comment-template.php, 查找 Walker_Comment 类。以下展开先容这 4 个要领:

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

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

3.start_el
  条目标前半部门, 包罗开始标记和评论内容. 开始标记是 <div> 可能 <li> (外层是 ol 或 ul 的环境下是 <li>); 评论内容就是评论的相关信息显示, WordPress 向我们提供了可即用的机关, 但也可以通过 callback 要领改变评论内容的布局。挪用回调函数的部门代码示意如下:

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 要领内部的默认机关。

4.end_el
  条目标后半部门,其实就一个竣事标记,这里也提供一个名为 end-callback 的回调要领, 道理和 start_el 一样,是一个自界说的处理惩罚方法。可是 end-callback 并不常用,因为 end_el 只生成一个简朴的竣事标记,实在没须要为此再界说一个要领。我以为只有在需要巨大的评论布局时,才有须要用到 end-callback。如:要在评论的上方和下方都添加配景图结果,评论框内大概需要多一个 DIV 层, 则大概用上 end-callback。在 callback 要领中以 <div><div> 作为开始,而 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>

又设 “…” 为评论内容, 则代码生成如下:

<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 v3.5.2 简体中文版下载

WordPress 评论回答嵌套成就的构成原理

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/10578.html