WordPress评论审核两项需求:调整阈值与新增用户角色
解决方案:调整评论审核阈值 + 自定义订阅者角色
一、将评论免审核阈值调整为3条已通过评论
WordPress自带的pre_comment_approved钩子刚好能解决这个问题,你只需要通过add_filter挂载一个自定义函数,就能覆盖默认的审核逻辑。把下面这段代码添加到主题的functions.php文件,或者自定义插件里就行:
add_filter('pre_comment_approved', 'custom_comment_moderation_threshold', 10, 2); function custom_comment_moderation_threshold($approved, $commentdata) { // 匿名评论直接触发审核 if (empty($commentdata['user_id'])) { return 0; } // 统计当前用户已通过的评论数量 $user_id = $commentdata['user_id']; $approved_comments_count = get_comments(array( 'user_id' => $user_id, 'status' => 'approve', 'count' => true )); // 已通过评论≥3条就自动放行,否则进入审核队列 return ($approved_comments_count >= 3) ? 1 : 0; }
简单说下逻辑:
- 先过滤匿名用户,这类评论直接走审核流程
- 对登录用户,统计他们历史上通过审核的评论总数
- 达到3条阈值就自动通过,没到的话就需要人工审核
二、创建继承订阅者权限的Subscriber-To-Moderate角色
用WordPress内置的add_role()函数就能轻松实现,直接继承订阅者(subscriber)的全部权限。代码同样放到functions.php或者自定义插件中:
add_action('init', 'create_subscriber_to_moderate_role'); function create_subscriber_to_moderate_role() { // 获取订阅者角色的所有权限集合 $subscriber_caps = get_role('subscriber')->capabilities; // 创建新角色:ID为subscriber-to-moderate,显示名称为Subscriber-To-Moderate add_role( 'subscriber-to-moderate', 'Subscriber-To-Moderate', $subscriber_caps ); }
执行一次这段代码后,后台用户角色管理里就会出现这个新角色。如果之后需要给它加额外权限,直接在$subscriber_caps数组里新增键值对就行(比如$subscriber_caps['edit_profile'] = true;)。另外,角色创建成功后可以删掉这段代码,避免每次初始化都重复执行(WordPress会自动忽略已存在的角色,但删掉更清爽)。
内容的提问来源于stack exchange,提问作者Greg Skala
相关产品推荐
相关产品推荐

