评论互动奖励与惩罚插件(完整文档整理版)
用户在网站评论区发表评论后,系统将按照自定义概率随机触发奖励 / 惩罚,支持积分、余额、经验值、会员权限的增减与变更。配套完整配置、日志、通知、权限管控功能,前台后台完美适配子比主题明暗模式。
- 随机触发机制:自定义奖励、惩罚触发概率,随机执行对应规则
- 奖励类型:增加积分、增加账户余额、提升经验值、赠送会员时长 & 等级
- 惩罚类型:扣除积分、扣减余额、降低经验值、取消会员资格
- 基础管控:自定义数值区间、评论字数限制、评论冷却时间(防刷)
- 权限筛选:指定生效用户角色、排除指定用户 ID、设置最低用户等级
- 消息通知:支持站内通知、邮件通知,用户可自主关闭通知权限
- 数据记录:全量操作日志、数据统计、日志 CSV 导出、自动清理过期日志
- 界面适配:原生适配子比主题日间 / 夜间模式
- WordPress 版本:7.0 及以上
- PHP 版本:8.1 及以上
- 前置条件:网站已启用子比主题 (Zibll)
- 将插件文件夹
zib-comment-reward-punishment上传至站点目录:/wp-content/plugins/ - 进入 WordPress 后台 → 插件,找到本插件并点击激活
- 后台侧边栏出现「评论奖励惩罚」菜单,进入即可完成参数配置
代码
zib-comment-reward-punishment/
├── zib-comment-reward-punishment.php # 插件主入口文件
├── inc/ # 核心功能模块
│ ├── options.php # CSF后台配置面板
│ ├── reward-punishment.php # 奖惩核心逻辑
│ ├── user-asset.php # 用户资产(积分/余额/经验/会员)操作
│ ├── notification.php # 站内+邮件通知模块
│ └── logger.php # 日志记录、统计、清理模块
├── assets/ # 前端静态资源
│ ├── css/frontend.css # 前台样式文件
│ └── js/frontend.js # 前台交互脚本
└── README.md # 插件使用说明文档
路径:评论奖励惩罚 → 基础设置
- 启用功能:全局开关,控制插件是否生效
- 最短评论字数:低于该字数不触发奖惩(默认 10 字)
- 冷却时间:同一用户两次触发间隔(默认 300 秒)
- 通知用户:触发奖惩时是否推送通知
- 记录日志:是否将操作存入数据库
路径:评论奖励惩罚 → 奖励设置
- 奖励触发概率:评论后触发奖励的比例(默认 30%)
- 积分奖励:开关、最小 / 最大奖励数值(默认 10~50)
- 余额奖励:开关、最小 / 最大金额(默认 1~10 元)
- 经验值奖励:开关、最小 / 最大经验(默认 10~100)
- 会员奖励:开关、赠送会员天数(默认 7 天)、会员等级(普通 / 高级 / 超级)
路径:评论奖励惩罚 → 惩罚设置
- 惩罚触发概率:评论后触发惩罚的比例(默认 10%)
- 积分惩罚:开关、最小 / 最大扣除数值(默认 5~20)
- 余额惩罚:开关、最小 / 最大扣除金额(默认 0.5~5 元)
- 经验值惩罚:开关、最小 / 最大扣除数值(默认 5~50)
路径:评论奖励惩罚 → 权限控制
- 适用用户角色:指定可参与奖惩的用户组(默认:订阅者、投稿者、作者)
- 排除用户 ID:填写用户 ID,多 ID 用英文逗号分隔,该类用户不参与规则
- 最低用户等级:低于该等级的用户不触发奖惩(0 = 不限制)
- 用户发布评论,系统自动校验字数、冷却、权限、概率,判定是否触发奖惩
- 触发后前台弹出提示窗口,展示具体奖惩内容
- 通知设置:个人资料页可自主开启 / 关闭站内通知、邮件通知
- 操作日志:查看所有奖惩记录、关联评论 / 文章、操作用户
- 数据统计:查看周期内奖励、惩罚整体数据
- 日志导出:支持将日志导出为 CSV 文件
- 日志清理:插件自动清理过期日志,默认保留 30 天
WordPress 后台 → 用户 → 个人资料 → 评论奖励惩罚通知设置,勾选对应通知类型即可。
日志数据表
wp_zcrp_logs,用于存储所有奖惩记录:代码
CREATE TABLE wp_zcrp_logs (
id bigint(20) NOT NULL AUTO_INCREMENT,
user_id bigint(20) NOT NULL,
comment_id bigint(20) NOT NULL,
post_id bigint(20) NOT NULL,
type varchar(20) NOT NULL COMMENT 'reward/punishment',
action varchar(50) NOT NULL COMMENT 'points/balance/vip/exp',
value decimal(10,2) NOT NULL DEFAULT 0,
description text NOT NULL,
created_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY user_id (user_id),
KEY comment_id (comment_id),
KEY created_at (created_at)
);
comment_post:监听评论提交事件,触发奖惩逻辑zib_require_end:加载子比 CSF 后台配置面板show_user_profile/edit_user_profile:在用户资料页添加通知选项personal_options_update/edit_user_profile_update:保存用户通知配置
代码
// 插件配置读写
zcrp_get_option($key, $default);
zcrp_update_option($key, $value);
// 用户资产操作
zcrp_add_points($user_id, $points); // 增加积分
zcrp_deduct_points($user_id, $points); // 扣除积分
zcrp_add_balance($user_id, $amount); // 增加余额
zcrp_deduct_balance($user_id, $amount); // 扣减余额
zcrp_add_exp($user_id, $exp); // 增加经验
zcrp_deduct_exp($user_id, $exp); // 扣减经验
zcrp_add_vip($user_id, $days, $level); // 赠送会员
zcrp_remove_vip($user_id); // 取消会员
// 日志相关
zcrp_log_operation($user_id, $comment_id, $post_id, $type, $action, $value, $description);
zcrp_get_user_logs($user_id, $limit, $offset);
zcrp_get_statistics($period);
- 全量 AJAX 请求启用 Nonce 验证
- 严格校验用户角色与操作权限
- 输入数据使用
sanitize_*系列函数过滤 - 页面输出使用
esc_*系列函数转义 - 采用
$wpdb->prepare预编译 SQL,杜绝注入风险 - 启动前检测子比主题状态,防止主题不兼容报错
- 插件配置项启用静态缓存,减少数据库查询
- 日志表建立专属索引,提升查询速度
- 定时任务自动清理过期日志,控制数据表体积
- CSS/JS 合理依赖加载,避免资源重复加载
A:检查三项内容:已启用子比主题、PHP 版本≥8.1、WordPress 版本≥7.0。
A:逐一排查:插件未开启、评论字数不达标、冷却时间未结束、用户角色 / 等级被限制、概率未命中。
A:后台进入「评论奖励惩罚 → 奖励设置 / 惩罚设置」,直接修改对应概率数值即可。
A:后台菜单「评论奖励惩罚 → 操作日志」。
A:默认保留 30 天,自动清理。添加以下代码可自定义保留天数:
代码
add_filter('zcrp_log_retention_days', function() {
return 60; // 修改为想要保留的天数
});
- 修复经验值无法到账问题,替换为
zib_add_user_level_integral函数 - 修复会员权限失效问题,修正过期时间参数格式
- 新增
integral_add_options过滤器,优化经验值明细展示
- 正式首发版本,完成评论奖惩核心逻辑
- 支持积分、余额、经验、会员四类奖惩操作
- 搭建完整 CSF 后台配置面板
- 实现操作日志、数据统计、通知全套功能
© 版权声明
本网站部分文件及内容来自互联网,版权归原作者所有。转载需授权,侵权必究。部分内容受《网络出版服务管理规定》保护,未经许可禁止商业使用。
THE END




暂无评论内容