ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

酱茄小程序开源版评论系统源码剖析:评论增删、防抖去重与微信msg_sec_check敏感词检测全解析

酱茄小程序开源版评论系统源码剖析:评论增删、防抖去重与微信msg_sec_check敏感词检测全解析 酱茄小程序开源版评论系统源码剖析评论增删、防抖去重与微信msg_sec_check敏感词检测全解析【免费下载链接】jiangqie_kafei酱茄小程序开源版基于WordPress的微信小程序适用于博客小程序和新闻资讯小程序。项目地址: https://gitcode.com/gh_mirrors/ji/jiangqie_kafei酱茄小程序开源版是基于 WordPress 的微信小程序解决方案适用于博客小程序和新闻资讯小程序。它的评论系统是整套产品中设计最完整的功能之一前端负责防抖防重复提交后端负责评论增删查改再叠加微信 msg_sec_check 敏感词检测保证内容安全。本文将带你完整走读这套评论系统的实现思路即使你是刚接触 WordPress REST API 的新手也能轻松读懂。评论功能入口一条登录 开关 敏感词三重校验的链路在酱茄开源版中所有接口都注册在 WordPress 的 REST API 之上。评论模块对应三个路由评论列表comment/index、发布评论comment/add、删除评论comment/delete全部定义在 class-jiangqie-api-comment-controller.php 的register_routes()方法中。发布评论comment_add的处理流程值得重点学习它按顺序做了五件事登录校验通过check_login()用 token 反查用户未登录直接返回还没有登陆错误功能开关读取后台选项switch_comment评论功能未开启则拒绝手机号绑定校验若后台开启switch_comment_mobile未绑定手机号的账号不能评论防止匿名灌水敏感词检测调用msg_sec_check()检查内容命中敏感词返回请勿发布敏感信息写入评论通过 WordPress 原生的wp_insert_comment()入库并根据switch_comment_verify开关决定评论是待审核还是直接通过。这种层层设卡的写法是 WordPress REST 接口开发的典型范式非常值得借鉴。如上图所示后台基础设置面板提供了评论开关、评论审核开关等选项这些正是上文comment_add中读取的配置项。评论增删查原生 wp_insert_comment 与连坐式删除发布与回复一个接口搞定发布评论和回复评论共用同一个接口区别只是参数parent_id为 0 表示顶层评论大于 0 则表示回复某条评论。这样前端无需区分两个接口逻辑更简单。列表接口登录后可见自己的待审评论comment_index列表接口有一个很贴心的细节登录用户可以额外看到自己的待审核评论comment_approved0访客则只能看到已通过的评论。这在get_comments()方法的 SQL 条件中体现得非常清晰已登录comment_approved1 OR user_id当前用户未登录comment_approved1评论按comment_ID DESC倒序排列并用LIMIT实现分页前端再配合加载更多实现无限滚动。删除评论一条 SQL 删除全部评论删除接口comment_delete的 SQL 是这样的DELETE FROM comments WHERE comment_ID %d OR comment_parent %d也就是说删除一条评论时它下面的所有子评论会一并删除连坐式删除。这样避免了评论区出现孤立的回复楼体验更干净。上图右侧即为小程序文章详情页底部点赞、评论、收藏、分享四个操作按钮点击评论按钮即可唤起评论输入框。前端防抖去重防止连点两次产生重复评论防抖去重的实现位于小程序端文章页 article.vue 的handlerCommentSubmit()方法中核心思路只有一个状态标志位页面 data 中声明comment_submiting: false点击提交时若comment_submiting为true直接return拦截本次点击否则置为true并发起请求请求成功回调中再将comment_submiting复位为false。这就是最朴素的请求锁式防抖请求未返回前重复点击全部被吞掉从根本上杜绝了重复评论。提交成功后还会刷新评论列表并更新评论数待审核评论不计入数量变化。项目更新日志中也明确记录了评论防抖重复这一修复可见这是真实用户反馈驱动出来的改进。微信 msg_sec_check内容安全的最后一道防线msg_sec_check()方法定义在 class-jiangqie-api-base-controller.php 中是整个插件的公共能力——发布评论、搜索关键词、修改昵称等多处都会调用它。它的执行逻辑分三步仅微信端生效请求参数os不为wx时直接放行避免非微信端H5、百度等依赖微信接口换取 access_token通过JiangQie_API::get_wx_token()获取小程序凭证拿不到 token 时返回false宁严勿松直接拦截调用微信安全接口POST 到微信官方的wxa/msg_sec_check接口将待检测内容传给微信做敏感词扫描errcode为 0 表示安全。一个容易忽略的工程细节当wp_remote_post请求本身失败网络异常时代码选择return true放行保证微信接口抖动不会阻断正常评论而 token 缺失时却返回false拦截。这种故障时放行、无凭证时拦截的取舍体现了对可用性与安全性的平衡思考。总结值得抄作业的四条经验接口分层路由注册、登录校验、业务逻辑分离公共能力token 校验、敏感词检测上提到基类复用开关可配评论开关、审核开关、手机号绑定要求全部走后台配置不改代码即可调整运营策略前端请求锁用一个submitting标志位即可实现防抖去重简单可靠安全兜底策略第三方安全接口故障时放行保体验凭证缺失时拦截保安全。这套评论系统虽然代码量不大但把微信小程序内容社区的常见需求——登录评论、楼中楼回复、评论审核、删除、敏感词过滤——都覆盖了是学习 uni-app WordPress REST API 开发的一个优秀范本。【免费下载链接】jiangqie_kafei酱茄小程序开源版基于WordPress的微信小程序适用于博客小程序和新闻资讯小程序。项目地址: https://gitcode.com/gh_mirrors/ji/jiangqie_kafei创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表