pre_comment_approved
云策文档标注
概述
pre_comment_approved 是一个 WordPress 过滤器钩子,用于在评论被插入数据库前,过滤其批准状态。它允许插件覆盖 wp_allow_comment() 函数设置的初始批准状态,控制评论是否被批准、待审、标记为垃圾或移至回收站。
关键要点
- pre_comment_approved 钩子在 wp_allow_comment() 函数中调用,用于过滤评论的批准状态。
- 参数包括 $approved(批准状态,可接受 1、0、'spam'、'trash' 或 WP_Error)和 $commentdata(评论数据数组)。
- 返回值为 0(待审)、1(批准)、'spam'(垃圾)或 'trash'(回收站),所有评论都会被添加到数据库,包括垃圾评论。
- 从 WordPress 4.9.0 开始,返回 WP_Error 可以短路评论插入过程,跳过进一步处理。
- $commentdata 数组包含评论的详细信息,如 comment_post_ID、comment_content 等,与 WP_Comment_Query::get_comments() 返回的索引一致。
- 在 WordPress 3.1 之前,此过滤器不传递 $commentdata,而是使用全局变量如 $comment_ID 访问评论信息。
代码示例
// 示例:根据评论内容修改批准状态
add_filter('pre_comment_approved', 'my_comment_approval_filter', 10, 2);
function my_comment_approval_filter($approved, $commentdata) {
// 检查评论内容是否包含特定关键词
if (strpos($commentdata['comment_content'], 'spam_keyword') !== false) {
return 'spam'; // 标记为垃圾
}
return $approved; // 否则保持原批准状态
}注意事项
- 此过滤器允许插件干预评论批准流程,但需谨慎处理以避免影响正常评论功能。
- 返回 WP_Error 可以阻止评论插入,适用于需要严格验证的场景。
- 垃圾评论虽被标记,但仍存储在数据库中,可供插件分析使用。
原文内容
Filters a comment’s approval status before it is set.
Parameters
Source
return apply_filters( 'pre_comment_approved', $approved, $comment_data );
Skip to note 2 content
Steven Lin
Example migrated from Codex:
The following code examines comment content and modifies approval status if needed