文章标题拦截器 v1.2.1 —— WordPress全入口内容安全管控插件
文章标题拦截器是一款专为WordPress开发的内容安全插件,能够在文章发布前实时检测标题中的敏感词汇,自动拦截违规发布请求,并生成完整的审计日志。无论用户通过后台、REST API、XML-RPC还是前端表单发布内容,系统都能实现无死角防护。
📁 插件目录结构
title-blocker/
├── title-blocker.php # 主入口文件:常量定义、类加载、初始化
├── includes/ # 核心功能类目录
│ ├── class-activator.php # 激活器:创建数据表、初始化默认设置
│ ├── class-logger.php # 日志记录器:写入/查询/统计/过滤日志
│ └── class-blocker.php # 拦截器:检测标题、阻止发布、生成提示
├── admin/ # 后台管理界面目录
│ ├── class-admin.php # 后台管理类:菜单、页面渲染、表单处理
│ └── css/
│ └── admin.css # 后台样式:卡片布局、统计面板、拦截提示美化
└── languages/ # 语言包目录(预留国际化)
🛡️ 核心功能详解
1. 全入口拦截覆盖
插件通过双重钩子机制,覆盖WordPress所有文章发布入口:
- REST API 拦截(
rest_pre_insert_post):覆盖Gutenberg块编辑器、移动端App、第三方REST调用 wp_insert_post_data拦截:覆盖经典编辑器、前端投稿表单、XML-RPC远程发布、批量编辑、快速编辑、自动发布
系统会自动识别发布来源,记录为:REST接口、远程发布、异步请求、后台管理、前台发布。
2. 智能标题检测引擎
检测逻辑支持多种匹配模式,适配中英文场景:
- 部分匹配(推荐中文):标题中包含拦截词即触发拦截,使用
mb_stripos或stripos进行不区分大小写匹配 - 全词匹配(适合英文):使用正则表达式
/bkeywordb/ui仅匹配完整单词边界 - 大小写敏感开关:可独立配置是否区分大小写
3. 详细审计日志系统
每次拦截行为都会写入独立数据表 {prefix}_title_blocker_logs,记录以下字段:
- 操作用户ID与用户名(未登录用户记录为"访客")
- 尝试发布的完整标题
- 匹配到的拦截词
- 发布来源(REST/远程/异步/后台/前台)
- IP地址(支持X-Forwarded-For代理穿透)
- 拦截时间(WordPress本地时间)
4. 可视化统计面板
后台"拦截日志"页面提供多维数据看板:
- 概览卡片:总拦截次数、今日拦截量、高频拦截词TOP1、高频触发用户TOP1
- 拦截词统计:按匹配词聚合,展示触发次数与最近标题
- 用户统计:按操作用户聚合,识别高频触发账号
- 多维度筛选:支持按拦截词、用户、发布来源、时间范围(今天/昨天/近7天/近30天)联动筛选
5. 卡片式拦截提示(v1.2.0+ 核心特性)
插件为不同发布场景设计了差异化的提示界面:
▸ Gutenberg 编辑器(精简卡片)
通过REST API返回错误,在编辑器顶部通知栏显示精简提示:包含🚫图标、拦截标题、高亮匹配词。隐藏详情与建议,避免遮挡编辑区域。
▸ 经典编辑器 / wp_die 错误页(完整卡片)
采用居中卡片布局,白色圆角背景配阴影边框,包含:
- 64px大图标视觉警示
- 红色高亮标题"发布已被拦截"
- 详情区域展示匹配到的具体拦截词(红色标签高亮)
- 操作建议区域:引导用户检查标题、替换词汇、联系管理员
▸ 前端表单提交(响应式卡片)
通过 wp_die() 输出完整错误页,自动适配移动端屏幕,提供返回链接。
⚙️ 后台管理界面
插件在后台添加顶级菜单"标题拦截",包含四个标签页:
功能介绍
采用卡片式网格布局,直观展示插件的六大能力:全入口拦截、日志记录、灵活匹配、统计面板、中文优化。

拦截词设置
- 文本域输入:每行一个拦截词,支持批量粘贴
- 匹配模式切换:单选按钮选择部分匹配或全词匹配
- 大小写敏感:复选框独立控制
- 实时统计:显示当前已配置的拦截词数量

拦截日志
- 表格展示:ID、时间、用户、标题、拦截词、来源、IP
- 分页浏览:每页20条,支持上一页/下一页导航
- 筛选器联动:四个下拉筛选条件 + 清空条件按钮
- 一键清空:带确认对话框的日志清理功能

更新日志
按版本倒序展示迭代记录,当前最新版本为 v1.2.1。
🔧 技术特点
- 双钩子防护:同时拦截REST API和wp_insert_post_data,确保任何发布路径都无法绕过检测
- 自动保存保护:通过
DOING_AUTOSAVE和wp_is_post_autosave判断,避免自动草稿保存时误拦截 - 状态精准判断:仅对 publish/future/pending 状态进行拦截,draft/auto-draft 正常放行
- 修订版本过滤:自动跳过 revision 和 auto-save 类型的插入操作
- 安全数据处理:所有入库数据经过
sanitize_text_field/sanitize_textarea_field处理 - Nonce 验证:后台表单提交启用 WordPress Nonce 安全校验
- 权限控制:仅 administrator 可管理设置与查看日志
- 兼容无 mbstring 环境:优先使用
mb_stripos,降级使用stripos - 国际化支持:所有字符串使用
__()和_e()函数,预留 .po/.mo 语言包目录
📌 适用场景
- 内容合规审查:自动阻止包含敏感词、违禁词的文章发布
- 多作者站点管控:记录每位作者/访客的触发行为,识别异常账号
- API 发布防护:防止通过 REST API 或 XML-RPC 绕过后台审核的自动化发布
- 前台投稿审核:前端用户提交表单时实时拦截,减少人工审核压力
- 安全审计追溯:完整的IP、时间、用户、标题记录,满足合规审计需求
🚀 安装与配置
- 将
title-blocker文件夹上传至/wp-content/plugins/ - 后台进入"插件"页面,启用"文章标题拦截器"
- 插件激活时自动创建日志数据表并初始化默认设置
- 进入左侧菜单"标题拦截" → "拦截词设置",输入需要拦截的词汇
- 选择匹配模式(中文推荐"部分匹配",英文可选"全词匹配")
- 保存设置,测试发布含拦截词的文章验证效果
📋 版本迭代记录
v1.2.1(2026-05-18)
- 修复PHP语法错误导致的站点白屏问题
- 兼容无mbstring扩展的服务器环境
- HTML字符串改用安全拼接方式,避免解析错误
- 拦截提示与功能介绍页面使用HTML实体编码替代Emoji,确保兼容性
v1.2.0(2026-05-18)
- 新增卡片式拦截提示界面,清晰展示匹配词与操作建议
- Gutenberg编辑器内错误提示精简显示,避免遮挡编辑区域
- 经典编辑器/wp_die错误页采用居中卡片布局
v1.1.0(2026-05-17)
- 新增后台顶级菜单、功能介绍页、更新日志页
- 日志支持按来源、时间范围筛选,统计面板支持联动筛选
- 后台UI全面卡片式美化
v1.0.0(2026-05-16)
- 初始版本:全入口拦截、日志记录、匹配模式切换
📝 总结
文章标题拦截器是一款生产级的WordPress内容安全插件,其核心价值在于:
- 无死角防护:通过REST + wp_insert_post双钩子,覆盖官方与第三方所有发布通道
- 审计可追溯:独立数据表记录6维度信息(用户、标题、关键词、来源、IP、时间)
- 体验友好:卡片式提示区分场景,Gutenberg精简不遮挡,wp_die完整有引导
- 中文场景深度优化:部分匹配适配中文无空格特性,界面全中文化
- 架构清晰:按职责分离为激活器、日志器、拦截器、管理器四个类,便于二次开发
✅ 插件下载
对于运营多作者博客、开放前台投稿、或需要满足内容合规要求的WordPress站点,该插件提供了开箱即用的标题层安全防护方案。
插件作者:以名知名 | 当前版本:v1.2.1 | 要求:WordPress 5.8+ / PHP 7.4+