通过 Filter_Plugin_Comment_Save 接口,可以在 Z-BlogPHP 保存评论数据时执行自定义逻辑。该接口在评论对象的 Save 方法内部、默认数据库写入之前触发,适用于保存记录、通知推送、保存前修正属性等场景。前台提交评论、后台审核通过、批量操作等都会触发。
Filter_Plugin_Comment_Save
Save
&$comment
下例在每次评论保存时,把评论 ID、所属文章与操作时间记录到插件日志(可作为外部通知、数据同步的载体):
<?php RegisterPlugin("demoAPP", "ActivePlugin_demoAPP"); function ActivePlugin_demoAPP() { Add_Filter_Plugin('Filter_Plugin_Comment_Save', 'demoAPP_Comment_Save'); } function demoAPP_Comment_Save(&$comment) { global $zbp; $log = date('Y-m-d H:i:s') . ' comment saved #' . $comment->ID . ' on post ' . $comment->LogID . PHP_EOL; @file_put_contents($zbp->usersdir . 'plugin/demoAPP/comment.log', $log, FILE_APPEND); return true; }
$comment
PLUGIN_EXITSIGNAL_RETURN
PostComment
Filter_Plugin_PostComment_Core
$comment->IsThrow
CheckComment
BatchComment
InstallPlugin_demoAPP
评论保存联动扩展
通过
Filter_Plugin_Comment_Save接口,可以在 Z-BlogPHP 保存评论数据时执行自定义逻辑。该接口在评论对象的Save方法内部、默认数据库写入之前触发,适用于保存记录、通知推送、保存前修正属性等场景。前台提交评论、后台审核通过、批量操作等都会触发。接口信息
Filter_Plugin_Comment_Save&$comment完整案例
下例在每次评论保存时,把评论 ID、所属文章与操作时间记录到插件日志(可作为外部通知、数据同步的载体):
注意事项
$comment的属性会影响即将保存的数据(如追加防灌水标记);Save方法的返回值并跳过默认写入,须配合PLUGIN_EXITSIGNAL_RETURN信号(在回调内每次置位);注意提交评论的流程(PostComment)并不检查Save的返回值,拦截保存后评论计数等后续流程仍会执行,纯拦截垃圾评论建议改用Filter_Plugin_PostComment_Core接口配合$comment->IsThrow实现;CheckComment)与批量操作(BatchComment)也会触发本接口,回调逻辑应轻量、幂等;InstallPlugin_demoAPP中创建)。