项目名称:NewVFX Content Tool (独立版)
› 社区话题 › wordpress开发 › 项目名称:NewVFX Content Tool (独立版)
- 该话题为空。
- 作者帖子
- 2026年8月16日 - 下午10:19 #1497

追光管理员NewVFX Content Tool (内容补全与入库工具) 的完整项目文档。这个工具直接操作 WordPress 和 bbPress 的核心内容本体,权限极大,因此文档中特别强化了安全警告与操作规范。
一、 功能说明 (Feature Overview)
本工具是一个专为 WordPress + bbPress 架构设计的独立 PHP 脚本。它绕过了 WordPress 后台繁琐的编辑器、kses 过滤机制以及各类钩子(Hooks),实现对文章(Post)和论坛话题(Topic)标题与正文的极速批量导出、AI 扩写与无损导入。
核心特性:
1. 零损耗更新 (Zero-Loss Update):
对于已存在的文章/话题,采用直接 SQL ($wpdb-update) 写入 posttitle 和 postcontent。
彻底绕过 WordPress 的 kses 过滤、自动格式化(wpautop)和 savepost 钩子,保证正文中的任何 HTML 标签、代码块、特殊字符逐字符原样保留。2. 完美兼容 bbPress 结构:
新建 Topic 时,采用 bbPress 官方标准底层 API bbpinserttopic()。
自动且完美地写入 bbpforumid、bbplastactivetime、bbpreplycount 等核心 Meta 数据,确保新建的话题立刻、正确地显示在论坛列表的最顶端,无需手动修补数据库。3. 智能字数过滤导出:
支持按“正文字数低于 N 字”精准筛选导出“薄内容”(Thin Content),方便交由 AI 进行定向扩写。
支持全量导出,用于跨站点数据迁移或本地大规模重构。4. 静默规模化入库:
批量新建 Topic 时,自动移除 bbPress 的邮件通知钩子(bbpnotifyforumsubscribers),防止给全站订阅者发送垃圾邮件。5. 分块流式处理与实时日志:
采用 AJAX 分块导入(每批 100 行),规避 PHP 超时。
前端黑底终端实时滚动 [OK] / [SKIP] / [ERR] 状态,日志同步落盘至服务器。二、 开发日志 (Changelog)
V1.1 (当前版本) – 修复 bbPress 列表显示致命 Bug
[Fix] 彻底重构 Topic 新建逻辑。弃用不稳定的 bbpnewtopic,改用官方标准 API bbpinserttopic()。
[Fix] 解决了新建 Topic 因缺失 bbplastactivetime 等 Meta 数据,导致“URL 可访问但论坛列表不显示”的幽灵数据问题。
[Opt] 优化了导入批次大小(从 200 行降至 100 行),以适应包含大量 HTML 代码的长正文导入,降低单次请求内存峰值。V1.0.1 – 修复空 ID 拦截 Bug
[Fix] 修复了防御表头逻辑(isnumeric(\’\’) 为 false)误杀“新建行(空 ID)”的问题,打通了规模化入库新文章的通道。
[Feat] 作业文件命名规则升级为 content-YmdHi 格式,避免与 SEO 工具的作业文件冲突。V1.0 – 初始发布
[Feat] 实现 Post 与 Topic 的分离导出。
[Feat] 引入 charcount(去标签后的正文字数)计算,支持按字数阈值过滤导出。
[Feat] 实现基于 ID 路由的导入逻辑(有 ID 则更新,无 ID 则新建)。
[Security] 引入 ksesremovefilters(),确保正文代码不被 WordPress 安全机制吞噬。三、 使用说明书 (User Guide)
⚠️ 最高级别安全警告
1. 直接操作正文:本工具直接读写文章和话题的核心本体,不触碰任何 SEO 字段。
2. 必须备份:在进行任何导入操作前,务必使用 phpMyAdmin 或 UpdraftPlus 完整备份数据库。
3. 用完即焚:操作完成后,请立即从服务器删除 newvfx-content-tool.php 文件。1. 部署与登录
1. 将 newvfx-content-tool.php 上传至 WordPress 根目录。
2. 修改文件顶部的 $accesspassword。
3. 浏览器访问该文件,输入密码进入控制台。2. CSV 数据结构详解 (9 列)
无论是导出还是导入,都必须严格遵守以下 9 列结构:id, type, title, content, charcount, authorid, categoryids, tags, status
| 列名 | 说明 | 更新模式 (有 ID) | 新建模式 (空 ID) |
| id | 文章/话题 ID | 必填,作为更新锚点 | 留空,系统将自动分配新 ID |
| type | 内容类型 | post 或 topic | post 或 topic |
| title | 标题 | 非空则更新 | 必填 |
| content | 正文 (含 HTML) | 非空则更新 (零过滤) | 必填 |
| charcount | 纯文本字数 | 忽略 (仅供导出参考) | 忽略 |
| authorid | 作者用户 ID | 忽略 (不修改作者) | 必填 (留空则使用当前登录用户) |
| categoryids | 分类/版块 ID | 忽略 (不修改分类) | Post: 分类 termid (逗号分隔)Topic: Forum ID (如 6817) |
| tags | 标签名 | 忽略 (不修改标签) | 标签名 (逗号分隔) |
| status | 状态 | 忽略 (不修改状态) | publish / draft (默认 publish) |3. 核心工作流
场景 A:补全“薄内容” (AI 扩写)
1. 导出:选择 topic 或 post,模式选“仅薄内容”,阈值设为 30(或自定义)。下载 CSV。
2. AI 处理:将 CSV 喂给 AI Agent,要求其根据 title 和现有 content,将 content 列扩写为完整的专业教程(保留原有 HTML 结构)。
3. 导入:上传处理后的 CSV。工具会根据 id 精准更新标题和正文,其他元数据(如作者、分类、SEO)完全不受影响。场景 B:规模化入库新内容 (批量发帖)
1. 构造 CSV:在本地新建 CSV,第一列 id 全部留空。
2. 填写数据:
填入 type (如 topic)。
填入完整的 title 和 content (包含 HTML 代码)。
填入 authorid (如 173)。
关键:如果是 topic,categoryids 列必须填写目标 Forum 的 ID(可在后台论坛列表的 URL 中找到,如 post=6817)。
填入 tags (如 达芬奇,调色)。
3. 导入:上传 CSV,观察终端日志。日志会打印出新分配的 ID(如 134271 [OK] 新建 topic…)。
4. 清理缓存:入库完成后,务必在 WordPress 后台 Flush Redis Object Cache 并 Purge WP Rocket 缓存,否则前台论坛列表可能不会立即显示新话题。4. 常见问题排查 (FAQ)
Q: 导入后,新建的 Topic 在论坛列表里看不到?
A: 这是缓存问题。请彻底清理 Redis 对象缓存和 WP Rocket 页面缓存,然后用无痕窗口(未登录状态) 刷新论坛列表。V1.1 版本已修复了底层 Meta 缺失的问题,只要清缓存就一定会显示。
Q: 导入的正文里,某些 HTML 标签或代码块消失了?
A: 请检查你的 CSV 文件。如果 CSV 中的 HTML 没有被正确的双引号 \” 包裹,或者内部的双引号没有转义(如 \”\”),CSV 解析器会将其截断。建议使用 Excel 或专业的 CSV 编辑器(如 VS Code + CSV 插件)来编辑包含复杂 HTML 的正文。
Q: 为什么更新已有文章时,categoryids 和 tags 没有生效?
A: 这是设计如此。为了极致安全,更新模式(有 ID)只允许修改 title 和 content。如果需要批量修改已有文章的分类或标签,请使用 WordPress 后台的“批量编辑”功能或专门的 Taxonomy 管理插件。本工具只负责“内容本体”。
- 作者帖子
- 在下方一键注册,登录后就可以回复啦。