源码系统概览
文章正文
Stargb 是一款体积极小的 WordPress 星级评分插件源码,作者标注版本为 1.0.0,专门为 OneNav 网址导航主题定制。
整个插件只有四个文件,没有任何第三方依赖,星星图形和表情反馈全部用内联 SVG 画出来,装上就能在网址详情页和侧边栏加评分。
本站已完整解压并逐文件走查过代码,下面把它的实现思路、可取之处和几个必须注意的问题讲清楚。
源码简介
插件根目录是 stargb,主入口 stargb.php 负责定义常量、加载子文件和挂载前台样式,两个功能文件放在 inc 目录,样式表放在 assets 目录。
inc 下的 rating.php 是评分核心,负责数据读写、去重判断、AJAX 提交和组件渲染;widget.php 负责注册侧边栏评分小工具。
评分数据不建任何数据表,而是直接写进文章的自定义字段,评分数组和已评用户标识分别存在两个 meta 键里,插件卸载后残留极少。
统计逻辑集中在 stargb_get_rating_data 函数,它一次性算出评分总人数、平均分和一到五星的分布数组,供详情页和小工具复用。
渲染层分成星星条、表情脸和分布柱状三种形态,星星、麦穗装饰和表情五官都是手写 SVG 路径,前台完全不用加载图片。
适用场景
最直接的用法就是给 OneNav 网址导航站的收录条目加上用户打分,让访客能对每个站点表态。
如果你在做资源站、工具站或者软件推荐站,这套组件也可以改造成资源评分模块。
对开发者而言,它是一个很干净的 WordPress 插件范例,适合学习钩子挂载、post meta 存储、AJAX 接口和小工具注册这几件事。
功能亮点
零依赖是最大优点,不建表、不引外部 CSS 框架、不加载图片,样式表通过文件修改时间自动生成版本号,避免缓存问题。
组件挂载方式很聪明,通过 OneNav 主题提供的详情页内容钩子自动插入评分块,不需要手动改主题模板。
小工具注册做了多重兜底,同时挂在主题初始化、init 和主题配置加载三个时机,最后还在小工具初始化阶段用高优先级强制注册一遍,避免因主题加载顺序导致注册失败。
游客也能参与评分,插件用登录用户 ID 或者访客 IP 与浏览器标识的哈希值作为去重键,同一标识只能评一次。
前台脚本和内联样式分别挂在页脚和页头输出,且都跳过后台环境,不会拖慢 WordPress 管理界面。
技术架构与部署指南
| 维度 | 本套源码 | 同类通用方案 |
|---|---|---|
| 技术栈 | 前端:原生 JavaScript 加内联 SVG,样式为独立 CSS 文件配合页头内联补充,无 jQuery 之外的额外 | 依具体方案选型,需自行搭建与维护 |
| 部署方式 | 把 stargb 文件夹整体上传到站点的插件目录,然后在后台插件列表里启用即可,没有额外的设置页需要配置。 | 多托管于第三方平台或订阅云服务 |
| 功能侧重 | 零依赖是最大优点,不建表、不引外部 CSS 框架、不加载图片,样式表通过文件修改时间自动生成版本号,避免缓存问题。 | 功能通用,定制深度有限 |
| 数据归属 | 数据自持,部署在自有服务器,不出站 | 数据通常留存于服务商侧 |
| 成本模式 | 获取后自主部署,无持续授权费用 | 通常按订阅或调用量计费 |
技术栈与运行环境
前端:原生 JavaScript 加内联 SVG,样式为独立 CSS 文件配合页头内联补充,无 jQuery 之外的额外依赖。
后端:PHP,基于 WordPress 插件 API,使用 add_action 钩子与 AJAX 动作注册。
数据库:不新建数据表,评分数据存放于 WordPress 自带的文章 meta 表。
运行环境:WordPress 站点,建议 PHP 7.4 及以上,需搭配 OneNav 网址导航主题使用。
其他依赖:依赖 OneNav 主题的详情页内容钩子与主题配置框架,脱离该主题需自行改钩子。
安装与部署提示
把 stargb 文件夹整体上传到站点的插件目录,然后在后台插件列表里启用即可,没有额外的设置页需要配置。
启用后打开任意一个网址详情页,评分组件会自动出现在正文内容之后。
侧边栏评分小工具需要到外观里的小工具面板手动拖到目标侧边栏,才会在前台显示。
如果你用的不是 OneNav 主题,需要把详情页插入钩子替换成自己主题的内容钩子,或者改用短代码方式调用渲染函数。
截图与演示说明
网址详情页正文下方的评分区是核心界面,左侧是平均分与五星条,右侧是一到五星的分布柱状图,两侧还有麦穗形状的 SVG 装饰。
鼠标划过星星时会出现表情脸反馈,从不满到满意对应不同的眼睛和嘴巴路径,提交后星条会锁定并弹出评分成功提示。
侧边栏小工具是另一处可截图位置,它复用同一套渲染函数,以紧凑形态展示当前条目的平均分与评分人数。
已评分状态下再次点击会返回提示文案,这个交互也值得单独截图,用来说明去重机制生效。
常见问题
问:启用后详情页没有出现评分?
插件绑定的是 OneNav 主题的详情页内容钩子,若主题不匹配或版本过旧,钩子不存在就不会输出,需要手动改成主题实际提供的钩子名。
问:侧边栏小工具找不到?
先确认插件已启用,再到外观里的小工具面板查看,插件是在小工具初始化阶段以高优先级注册的,正常情况下会出现在可用列表里。
问:评分数据存在哪里,能清空吗?
数据存在文章自定义字段里,删除对应的两个 meta 键即可清空某篇内容的评分记录。
安全风险提示
本插件未检测到 eval、base64_decode 一类混淆或后门代码,输出侧也使用了转义函数处理属性。
但走查发现 AJAX 提交接口没有做 nonce 校验,且同时开放给未登录访客,游客去重仅依赖 IP 与浏览器标识的哈希,换网络或改标识即可重复提交,存在被脚本刷分的风险。
另外评分记录是以完整数组形式存进文章 meta 的,热门条目评分量大时该字段会持续膨胀,建议二次开发时改为独立表或只存汇总值。
特别提示:下载后请务必进行安全审计,补齐接口校验与频率限制后再部署使用!
下载说明
本站提供的是插件完整源码包,解压后即为 stargb 目录,包含主入口文件、评分核心、小工具注册文件和样式表。
源码仅供学习研究、测试部署和二次开发参考,商用前请自行确认授权、版权和安全风险。
插件面向特定主题定制,使用前建议先在测试站验证兼容性,正式站点操作前请做好数据库与文件备份。