WordPress文章标题拦截器 v1.2.1

文章标题拦截器 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_striposstripos 进行不区分大小写匹配
  • 全词匹配(适合英文):使用正则表达式 /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() 输出完整错误页,自动适配移动端屏幕,提供返回链接。


⚙️ 后台管理界面

插件在后台添加顶级菜单"标题拦截",包含四个标签页:

功能介绍

采用卡片式网格布局,直观展示插件的六大能力:全入口拦截、日志记录、灵活匹配、统计面板、中文优化。

WordPress文章标题拦截器 v1.2.1 - 图片

拦截词设置

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

WordPress文章标题拦截器 v1.2.1 - 图片

拦截日志

 

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

WordPress文章标题拦截器 v1.2.1 - 图片

更新日志

按版本倒序展示迭代记录,当前最新版本为 v1.2.1。


🔧 技术特点

  • 双钩子防护:同时拦截REST API和wp_insert_post_data,确保任何发布路径都无法绕过检测
  • 自动保存保护:通过 DOING_AUTOSAVEwp_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、时间、用户、标题记录,满足合规审计需求

🚀 安装与配置

  1. title-blocker 文件夹上传至 /wp-content/plugins/
  2. 后台进入"插件"页面,启用"文章标题拦截器"
  3. 插件激活时自动创建日志数据表并初始化默认设置
  4. 进入左侧菜单"标题拦截" → "拦截词设置",输入需要拦截的词汇
  5. 选择匹配模式(中文推荐"部分匹配",英文可选"全词匹配")
  6. 保存设置,测试发布含拦截词的文章验证效果

📋 版本迭代记录

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内容安全插件,其核心价值在于:

  1. 无死角防护:通过REST + wp_insert_post双钩子,覆盖官方与第三方所有发布通道
  2. 审计可追溯:独立数据表记录6维度信息(用户、标题、关键词、来源、IP、时间)
  3. 体验友好:卡片式提示区分场景,Gutenberg精简不遮挡,wp_die完整有引导
  4. 中文场景深度优化:部分匹配适配中文无空格特性,界面全中文化
  5. 架构清晰:按职责分离为激活器、日志器、拦截器、管理器四个类,便于二次开发

✅ 插件下载

此处内容需要回复后并刷新才能查看

 
对于运营多作者博客、开放前台投稿、或需要满足内容合规要求的WordPress站点,该插件提供了开箱即用的标题层安全防护方案。


插件作者:以名知名 | 当前版本:v1.2.1 | 要求:WordPress 5.8+ / PHP 7.4+

 

下一篇 Locoy Publisher v3.1.0:WordPress火车头采集器免登录发布插件