前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何实现 WordPress 主题的 Thread Comments 功能

如何实现 WordPress 主题的 Thread Comments 功能

作者头像
Denis
发布2023-04-15 16:03:03
3680
发布2023-04-15 16:03:03
举报
文章被收录于专栏:WordPress果酱WordPress果酱

WordPress 从 2.7 版本新增的最大一个功能就是 Thread Comments(嵌套留言和回复),就是可以回复留言并且嵌套显示,这样非常留言的时候更加友好,可以针对日志内容留言,也可以针对某条留言回复,并且可以直接在留言中讨论而不影响其他用户,所以 WordPress 主题实现 Thread Comments 是非常必要的。

由于 WordPress 很早就在 wp_comments 数据表中预留了 comment_parent 字段,在 2.7 版本之前的实现 Thread Comments 功能的插件都是通过使用这个字段实现的,WordPress 2.7 之后自带的 Thread Comments 也不例外,也是通过这个字段实现,所以可以完全兼容之前的 Thread comments 插件。但是要使用 WordPress 2.7 自带的 Thread Comments,需要修改主题的 comments.php 主题文件,我下面就讲解下如何修改,注意这里的代码不向下兼容了,修改了之后,你的主题只能在 WordPress 2.7 或者中使用了。

1. 首先在主题的 header.phpwp_head() 函数之前添加如下函数:

代码语言:javascript
复制
if(is_singular()) wp_enqueue_script('comment-reply');

上面这个函数是在主题模板中添加 comment-reply.js 这个 JS,它是 Thread comment 正常工作和运行的基础。

2. WordPress 通过函数 wp_list_comments 来显示所有留言,并且按照 thread 形式。当然我们可以通过 callback 参数来指定一个回调函数来定义留言的样式。所以在 2.7 即之后的版本只需使用以下代码就可以来显示留言:

代码语言:javascript
复制
<ul class="commentlist">
<?php wp_list_comments(); ?>
</ul>

3. WordPress 留言还可以实现留言分页,如果你启用了留言分页功能,那么你需要在主题中添加以下代码实现留言分页导航:

代码语言:javascript
复制
<div class="navigation">
<div class="alignleft"><?php previous_comments_link() ?></div>
<div class="alignright"><?php next_comments_link() ?></div>
</div>

4. 要实现回复留言,首先需要要吧 Comment Form 放入一个 ID 为 respond 的容器中(一般为使用 DIV 就行)。然后并在 Comment form 中添加如下代码:

代码语言:javascript
复制
<?php comment_id_fields(); ?>

这段代码主要是让 Comment Form 获取一个当前 post ID (日志 ID)和 Parent comment ID(父级留言的 ID)。

5. 如果你想在回复留言的时候 Comment Form 的标题不一样。可以把 comment_form_title 函数替换成下面的函数:

代码语言:javascript
复制
<?php comment_form_title( '发表评论', '给 %s 回复' ); ?>

给 %s 回复 就是回复时候的标题,%s 是被回复者的名字。

6. 添加以下代码可以便能够取消回复:

代码语言:javascript
复制
<div id="cancel-comment-reply">
<small><?php cancel_comment_reply_link() ?></small>
</div>

对于以上函数的具体位置,你可以参考 default 主题的 comments.php 文件。下次我会讲下,在 WordPress 中如何简单把留言和 Trackbacks 分开,并且通过 Callback 函数自定义留言的格式。


本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com