过去三年,我一直用同一个地方管理客户项目、编辑日程和小型产品路线图:一个我经常忘记更新的 Trello 标签页。我尝试过其他工具。我试过 Notion 加上一个可以同步到 Asana 的 Zap。我还试过 ClickUp 和 WordPress 官方嵌入。甚至还试过 Project Panorama 和旧版的 WordPress 项目管理器。但每次我最终还是会回到 Trello,因为它至少不会自作聪明,夸大其词。
所以当 WPManageNinja 将 Fluent Boards 作为 WordPress 原生看板插件发布时,我嗤之以鼻。又一个“WordPress 版 Trello 克隆版”。但我还是花了整整两天时间,在沙盒环境中搭建了真实的看板,并将其与 FluentCRM 连接起来,仔细研究了源代码。专业版升级比免费版宣传截图所展现的要有趣得多。它也不是 Trello 的替代品,如果把它当成替代品,只会让人失望。
这是一篇篇幅较长但内容详实的文章。前半部分面向只想在网站内添加看板的网站所有者和团队负责人wp-admin。后半部分则面向开发人员:包括钩子、过滤器、REST接口、数据库表、FluentCRM漏斗操作,以及在部署到客户网站之前需要进行调整的内容。
Fluent Boards Pro是什么?
Fluent Boards Pro 是WPManageNinja出品的免费 Fluent Boards 插件的付费升级版。WPManageNinja 也是FluentCRM 、Fluent Forms、Fluent Support 以及众多其他“Fluent”系列 WordPress 产品的幕后团队。免费版插件提供带有列(阶段)和可拖动卡片(任务)的看板、基本评论、标签,以及与 Fluent 套件相同的 Vue 3 管理后台界面。
Pro 插件添加了团队实际开展工作所需的各个部分:重复性任务、带分组的子任务、任务依赖关系、自定义字段、时间跟踪、通过 S3 / Backblaze B2 / DigitalOcean Spaces / Cloudflare R2 上传文件附件、看板模板、FluentCRM 漏斗操作、传入和传出 webhook、用于 AI 代理的 MCP(模型上下文协议)端点、CSV / Asana / Trello 导入、甘特图视图以及前端门户短代码,以便客户无需管理员登录即可在公共站点上查看看板。
这是一个专业版附加组件fluent-boards,而非独立插件。必须先安装并激活免费插件。专业版会在fluent_boards_loaded执行操作时自动启动,并注册为核心应用程序的扩展。如果免费插件未安装,专业版将不会执行任何操作。
插件作者信息位于主文件头的WPManageNinja相应行中。
如果您已经知道为什么要在 WordPress 中使用看板,请跳过此部分。如果您还不清楚,那么正是这部分最终让我下定决心学习看板。
我合作过的每个团队都面临着同样的难题。内容都放在 WordPress 里,客户关系管理系统 (CRM) 也放在 WordPress 里。表单、工单、学习管理系统 (LMS) 课程等等,全都放在 WordPress 里。但项目看板却放在 Trello、Asana、Notion 或 ClickUp 里。所以,当一个内容任务的状态变为“已完成”时,并不会自动执行任何操作。必须有人在 WordPress 里手动切换状态,必须有人记住这一点。
WordPress 原生看板解决了数据传输问题。在 Fluent Boards 中将任务状态更改为“已发布”,即可通过外发 Webhook 或 FluentCRM 流程将其配置为实际发布文章、通知作者并更新 WordPress 用户自定义字段。数据始终在 WordPress 内部传输。
另一个原因是隐私。Trello 和 Asana 都部署在 AWS 上。如果您运营的是医疗保健网站、需要遵守客户保密条款,或者您是一家对 GDPR 法规感到担忧的欧盟机构,“所有客户工作数据都存储在我们自己的数据库和服务器上”绝对是一个极具吸引力的优势。存储在wp_fbs_*表格中的看板数据不会泄露给第三方 SaaS 服务。
缺点显而易见。现在你运行的是一个 Vue 应用,wp-admin它会与你网站已有的缓存插件和管理侧边栏发生冲突。在繁忙的多站点环境下,其性能和流畅度不如托管的 SaaS 服务。我们稍后会详细讨论这一点。
专业版包含的内容
与其删除营销列表,不如看看当我关闭免费插件并启用专业版插件后实际发生了哪些变化。
- 子任务和子任务组。免费版为每个任务提供一个单独的清单。专业版则提供分组的子任务(例如“研究”、“草稿”、“编辑”),每个子任务都有自己的负责人、截止日期和标签。正是这项功能彻底改变了我的编辑工作流程。一篇博客文章并非一项任务,而是八项任务。
- 循环任务。您可以设置任务每日、每周、每月或按自定义时间表重复执行。该插件底层使用 Action Scheduler(与 WooCommerce 使用的相同)。我将“刷新前 10 篇文章”任务设置为每月 1 号重复执行,它确实会按时显示。
- 任务依赖关系。一个任务可能被另一个任务阻塞。甘特图视图中,这种阻塞关系以条形之间的箭头表示。当前置任务完成后,后续任务即可解锁。它的功能不如真正的项目管理工具那么丰富,但足以满足“编辑完成才能发布”的需求。
- 自定义字段。每个看板可设置七种类型的自定义字段:文本、数字、下拉列表、日期、复选框、URL、电子邮件。可用于“字数统计”、“客户名称”或“WordPress.org 别名”。
- 时间跟踪。每个任务都有一个开始/停止计时器,并将数据写入
wp_fbs_time_tracks表格。您也可以手动记录时间。报表功能较为基础,但数据存储在您自己的数据库中,因此您可以根据需要构建任何发票查询。 - 看板模板。将看板保存为模板,然后基于该模板创建新看板,所有阶段、默认标签和任务占位符都已预先填充。
TemplateController此功能通过 REST API 公开。 - 前端门户短代码。
[fluent_board id="..."]在面向公众的页面上渲染一个看板。结合登录验证,您可以让客户仅查看自己的看板,而无需向他们提供 WordPress 管理员登录信息。 - 用于存储附件的云存储。免费版会将附件保存到指定位置
wp-content/uploads。专业版允许您将附件指向 S3、Backblaze B2、DigitalOcean Spaces 或 Cloudflare R2,并提供正确的签名 URL 支持。 - 支持导入 CSV、Asana 和 Trello 文件。这些
CsvController服务AsanaImporter允许您从之前的工具迁移数据。我测试了 Trello 的 CSV 导入路径;卡片和列表可以导入,但附件无法导入。 - 传入和传出 Webhook。Webhook会在任务创建、任务关闭、阶段移动、截止日期更改、优先级更改、添加标签、创建评论、添加负责人和任务归档时触发。传入 Webhook 允许您从外部系统(例如联系表单、Zapier 触发器、GitHub Actions 工作流)创建任务。
- FluentCRM 流程操作。 “从模板创建看板”在 FluentCRM 中显示为一个流程模块。当联系人进入流程时,系统会通过标准智能代码创建一个新的看板,并在看板标题中显示联系人的姓名
{{contact.email}}。这对于客户入职流程非常实用。 - MCP 服务器用于 AI 代理。Pro会在模型上下文协议 (MCP) 下注册工具,使 Claude 或其他 LLM 代理能够读取和写入板卡。这是个全新的功能,我建议将其视为测试版,但它的确存在。
- 甘特图视图。任务及其开始和结束日期按时间顺序排列,并用箭头表示依赖关系。
如果你只是想找一款项目管理工具来管理一个人的项目看板,那么免费插件可能就足够了。但如果你需要管理团队、处理周期性工作、按工时计费,或者有任何类型的自动化需求,那么你需要专业版。
安装和第一个小时
大多数插件评测在这里都会敷衍了事地说“直接上传zip文件就行了”。但我想要详细讲解一下实际操作过程。
首先安装免费的 Fluent Boards 插件。在 WordPress.org 插件库中搜索“Fluent Boards”。安装并激活该插件。插件会在顶部添加一个Fluent Boards菜单项和一个 Vue 应用/wp-admin/admin.php?page=fluent-boards。首次打开时,您会看到一个“创建您的看板”的引导向导。
2. 如果您愿意,可以跳过向导。表单下方有一个小小的“跳过引导”链接,点击即可。向导虽然好用,但您之后也可以通过常规用户界面创建看板。我建议跳过向导,因为向导的默认设置是一个没有阶段的路线图式看板,第一次使用可能会让人感到困惑。
3. 安装 Fluent Boards Pro。通过 [此处应填写上传链接] 上传压缩包Plugins -> Add New -> Upload Plugin。激活插件。Pro 插件会检查核心fluent_boards_loaded操作并静默接入。没有单独的菜单项。Pro 功能会直接显示在现有的管理页面上。
4. 设置菜单位置。Settings -> Features & Modules -> Menu Position您可以选择“独立”或“集成在 FluentCRM 中”。如果您已经在使用 FluentCRM,“集成在 FluentCRM 中”会将 Fluent Boards 集成到 CRM 侧边栏中,这样您的管理菜单就不会显得杂乱。我将它们都设置为独立模式,因为我经常在它们之间切换。
5. 如果您按小时计费,请启用时间跟踪功能。该功能默认关闭。您可以在“功能与模块”页面中找到该开关。启用后,插件会在每个任务详情视图中添加一个计时器图标。
6. 连接云存储(可选)。如果您上传大量附件,请将 Fluent Boards 指向 S3(或 Backblaze、DO Spaces、R2),以免存储wp-content/uploads空间过大。设置位于Settings -> Features & Modules -> Media Storage.
7. 创建您的第一个看板。在看板页面点击创建+ Add Board。选择名称、描述、类型(任务看板用于日常工作,路线图用于展望未来,待办事项看板用于个人清单)、货币和别名。Fluent Boards 默认创建三个阶段:打开、进行中、已完成。您可以通过列标题添加更多阶段或重命名这些阶段。
这就是全部设置过程。第一次从冷安装到Fluent Boards可用,大概花了八分钟,这还包括阅读入门指南的时间。第二次只用了两分钟。

管理员导览
Fluent Boards 管理后台有五个顶级标签页:仪表盘、看板、报告、设置以及一个“社区”外部链接。每个标签页都对应一个 Vue 路由,因此页面首次加载后即可立即导航。
仪表板
进入个人主屏幕。“最近打开”会显示您上次访问的看板。“我的任务”提供六个透视标签:已分配、即将到来、逾期、已提及、已完成和其他。这非常实用。如果您同时处理六个客户看板,您肯定不想逐个查找明天要交的任务。“即将到来”标签可以帮您轻松搞定。

右侧还有一个“配置标签页”按钮,可以让你隐藏不常用的标签页。我隐藏了“提及”标签页,因为评论提及不在我的工作流程之内。
看板
看板索引。左侧是每个看板的卡片,一个用于分组的文件夹列和一个+ Add Board按钮。看板带有彩色边框,边框颜色与插件创建时随机选择的背景色相匹配。您可以将看板置顶。

点击任意看板卡片即可进入看板视图。在看板视图中,您可以切换视图模式(详见下文),按负责人/截止日期/优先级/标签筛选,按文本搜索任务,以及使用+ Add Stage右侧的垂直列添加新阶段。
报告
看板或所有看板图表:未完成/已完成/逾期计数器、任务完成情况条形图和任务优先级环形图。您可以使用右上角的下拉菜单按看板进行筛选。

这就是Pro插件的报告功能让我感到失望的地方。图表非常基础,没有燃尽图、速度图,也没有按负责人划分的报告。如果你用过Jira或Linear,你会觉得它功能不足。不过对于一个六人编辑团队来说,也足够了。
设置
六个子页面:成员角色、常规设置、AI 代理的 MCP、传入 Webhook、传出 Webhook、功能和模块、许可证管理。“成员角色”页面用于告诉 Fluent Boards 哪些 WordPress 用户可以访问论坛以及它们的默认角色。管理员的默认角色为“所有权限”。

在“功能和模块”页面中,您可以实际启用和禁用专业版附加功能。

请注意底部的“推荐插件和附加组件”部分。团队正在推销 Fluent 套件的其他产品。这是一种比较委婉的推销方式(使用按钮而非横幅广告),您可以忽略它。
看板、阶段和任务
在 Fluent Boards 中,看板代表项目。阶段是看板上的一列。任务是一张卡片。这就是全部词汇。
看板有三种类型:“待办事项”(默认的看板,包含三个预设阶段)、“路线图”(没有默认阶段,用于产品路线图)以及面向公众的前端门户看板。您可以稍后更改看板类型,但通常没有必要这样做。
阶段以列的形式呈现。每个看板都以“打开”、“进行中”和“已完成”三个状态开始。您可以重命名阶段,拖动列标题重新排序,更改阶段颜色,设置默认负责人(自动分配给该阶段的每个新任务),以及将阶段标记为“N 天后自动归档”,以避免已完成的工作堆积。
任务就是卡片。每个任务包含:
- 标题和可选的描述(富文本)。
- 阶段(它位于哪一列)。
- 优先级(低/中/高)。
- 截止日期和开始日期。
- 受让人(一个或多个)。
- 标签(彩色标签,板级范围)。
- 子任务(分组,各自有负责人和日期)。
- 自定义字段值(如果看板有自定义字段)。
- 附件(文件上传,如果启用,则使用云存储)。
- 评论(线程式,支持 @ 提及)。
- 活动日志(记录每一次更改)。
- 关注者(收到活动通知的人)。
点击任务会打开一个详细信息模态框,该模态框会占据屏幕的大部分区域。

右侧的“操作”栏(作为负责人加入/移动/关注/更改负责人/子任务/自定义字段/创建模板/归档任务)是用户界面中最密集的部分。我花了整整两天时间才克服了需要手动点击操作栏的习惯,开始使用键盘快捷键。
一个特殊之处:这个模态框是一个路由,而不是一个覆盖层。#/boards/2/tasks/17-Draft-outline当你打开一个任务时,URL 会发生变化。这很方便,因为你可以直接链接到 Slack 中的某个任务,但这也意味着关闭模态框会触发返回上一级目录的操作,如果你之前已经打开了两个看板,这可能会让你感到意外。
视图:看板、表格、列表、日历、甘特图
这是我低估的部分。五种视图模式共享相同的数据,只需点击右上角的下拉菜单即可切换。
我们刚才看到的就是看板。卡片按阶段从左到右排列。这是它的标志性表面。
表格会将每个任务扁平化为一个可排序的行,包含阶段、优先级、状态、日期、负责人和标签列。每列都有一个排序箭头。您还可以添加自定义字段列。我使用这种视图进行任务分类,因为浏览包含 50 个任务的表格比浏览看板的五个列要快得多。

列表是一种更紧凑的表格,没有列边框,更接近 Notion 的数据库视图。数据相同,但视觉元素更少。
日历按截止日期在月历上绘制任务。非常适合编辑日程安排,但对于看板式工作来说用处不大,因为看板式工作中截止日期并非主要依据。
甘特图是最近专业版更新中的新增功能。任务以时间轴上的水平条形图形式呈现,条形图之间用箭头表示依赖关系。我原本以为这个视图用得最少,结果却在客户路线图的制作中用得最多。它的实现很务实:条形图可以拖动来更改日期,依赖关系以实心箭头显示,缩放级别(日/周/月/季度)也合理。它不像真正的甘特图工具那样花哨,没有关键路径高亮显示,也没有自动排程功能。但对于“向客户展示何时交付哪些内容”来说,它已经足够用了。
一个小小的不足之处:视图选择无法在不同看板之间保持。每次打开新看板时,它都会默认切换回看板视图。产品团队表示他们已经意识到了这个问题。
时间跟踪、自动化和网络钩子
这就是 Fluent Boards Pro 的价值所在,也是它与 Fluent 套件其他部分的集成开始变得重要的部分。
时间跟踪功能以任务为单位。每个任务的详细信息窗口中都有一个开始/结束计时器。点击开始按钮会在表中添加一行数据,包含时间、时长、工作时间和用户等列wp_fbs_time_tracks。user_id报表task_id视图started_at会将ended_at这些数据汇总,生成按任务和用户划分的详细数据。系统本身不提供开票功能,但您可以直接查询表并将其导入Fluent Booking Pro或您自己的计费逻辑。
SELECT u.display_name,
t.title,
SUM(TIMESTAMPDIFF(MINUTE, tt.started_at, tt.ended_at)) AS minutes
FROM wp_fbs_time_tracks tt
JOIN wp_fbs_tasks t ON t.id = tt.task_id
JOIN wp_users u ON u.ID = tt.user_id
WHERE tt.started_at >= '2026-05-01'
GROUP BY tt.user_id, tt.task_id;这条查询语句是我能找到的最接近发票导出功能的东西了。没问题。
循环任务使用Action Scheduler,它与 WooCommerce 自带的作业队列相同。当您将任务设置为循环时,插件会将循环配置存储在 `<recurrence_config>` 中wp_fbs_metas,并通过 `<recurrence_config>` 安排下一次循环as_schedule_recurring_action。在下次调度器运行时,ProScheduleHandler::recurringTaskScheduler()插件会检查是否有到期循环,并将任务克隆到配置的阶段。克隆的任务会触发相应的fluent_boards/repeat_task_created操作,因此您可以对其进行挂钩。
外发 Webhook是最简单的自动化模式。依次点击“设置”->“外发 Webhook”->“添加”。选择您关注的事件(例如任务创建、任务完成、阶段移动等)以及目标 URL。每当事件触发时,Fluent Boards 都会向该 URL 发送一个 JSON 有效负载。插件会OutWebhookHandler通过 Action Scheduler 将 POST 请求加入队列,因此即使 Webhook 目标响应较慢,也不会阻塞管理员。
典型的有效载荷如下所示:
{
"event": "fluent_boards/task_completed_activity",
"task": {
"id": 47,
"title": "Publish: Fluent Forms vs Gravity Forms",
"stage_id": 13,
"board_id": 2,
"assignees": [1],
"priority": "low",
"due_date": "2026-05-30",
"closed_at": "2026-05-25T12:14:09+00:00"
},
"by_user_id": 1
}传入 Webhook 的操作方式相反。依次点击“设置”->“传入 Webhook”->“添加”。插件会生成一个类似这样的 URL https://yoursite.com/?fluent_boards_webhook=ABC123。使用 JSON 请求体向该 URL 发送 POST 请求,Fluent Boards 会在目标看板上创建一个任务,该任务通过 Webhook 的存储字段映射进行映射。数据会经过过滤fluent_boards/incoming_webhook_data器,因此您可以在创建任务之前重写数据。
自动化规则比 Webhook 更进一步:它们实现的是 WordPress 内部自动化。“当任务状态变为‘已完成’时,向负责人发送电子邮件。”“当任务被标记为‘缺陷’时,将优先级更改为‘高’并通知关注者。”这些规则作用于看板,并位于看板的设置菜单中。它们不如 Trello 的 Butler 那样功能强大,但涵盖了我实际使用的 80% 的操作模式。
实话实说:Fluent Boards 的自动化引擎足以应对“如果此阶段发生变化,则通知相关人员”的情况。但它不足以应对“如果优先级高、负责人属于市场团队且截止日期在 7 天内,则发布到 Slack”的情况。要实现这一点,你需要将一个外发 Webhook 连接到 Zapier 或 n8n,并让外部协调器处理分支逻辑。
实际应用案例
过去一个月里,我发布了三个基于 Fluent Boards Pro 的工作流程。值得介绍一下,因为它们展示了该工具的实际用途。
1. 内容网站的编辑日历。一个看板,四个阶段(待办、草稿、编辑、已发布),每篇文章对应一个任务。自定义字段:字数统计、重点关键词、WordPress 文章 ID。每月一次的重复任务是“刷新前 10 篇文章”。设置了外部 webhook,wp-cli当任务进入“已发布”阶段时,webhook 会触发wp post update <ID> --post_status=publish。本文就是按照这个工作流程编写的。
2. 代理机构客户工作看板。每个客户一个看板。阶段包括:新请求、估价中、进行中、等待客户回复、已完成。每个任务均有时间跟踪。每月根据wp_fbs_time_tracks数据进行核对,生成发票。前端门户短代码([fluent_board id="..."])会在代理机构网站的私有页面上渲染客户看板,该页面由ARMember会员计划控制访问,因此客户无需管理员登录即可查看状态。
3. 小型 SaaS 产品路线图。采用路线图看板,按季度划分阶段。任务即功能。自定义字段:状态、Linear 工单 ID、公开发布日期。FluentCRM 集成会在企业客户通过转化漏斗转化后自动为其创建一个看板。他们的功能请求位于专属看板上,团队路线图位于共享看板上,并通过 Webhook 与我们的 Linear 实例双向同步。
这三者的共同特点是:虽然都存在看板,但真正的工作之所以能够完成,是因为看板通过 Webhook 与 Fluent 套件的其他部分或外部系统进行通信。Fluent Boards 本身就是一个不错的看板,而 Fluent Boards 作为集成中心,其价值才能真正体现出来。
开发者参考:钩子、过滤器、REST、数据库
如果您打算扩展 Fluent Boards Pro,那么这部分内容正是您需要的。该插件基于FluentBoards Framework与 FluentCRM 和 Fluent Forms 相同的框架构建,采用 PSR-4 命名空间、简洁的 Eloquent 风格 ORM 以及 Vue 3 管理后台。代码库易于阅读,操作/过滤器约定遵循标准的WordPress 插件钩子模式。
行动钩子
以下是 Pro 触发的、你可以进行钩子操作的操作。大多数操作会将相关的模型作为第一个参数传递。
fluent_boards/board_createdBoardService::createBoard(). 在写入行之后触发。fluent_boards/board_created_from_template.当从模板启动Fluent Boards时触发,传递$board,,$templateType。$templateIdfluent_boards/board_created_from_automation当 FluentCRM 流程创建看板并传递时触发$board,,$subscriber。$funnelSubscriberIdfluent_boards/task_attachment_added. 在附件保存后触发。fluent_boards/task_attachment_deleted. 在附件移除后触发。fluent_boards/subtask_added. 在创建子任务后触发,并将父任务和子任务传递给它。fluent_boards/subtask_cloned. 在子任务克隆后触发。fluent_boards/subtask_group_created//subtask_group_title_updated.subtask_group_deleted_activity子任务组生命周期。fluent_boards/task_dependency_added/task_dependency_removed. 传递前置任务和后续任务以及看板 ID。fluent_boards/task_custom_field_changed. 传递任务 ID、自定义字段、旧值、新值。fluent_boards/task_due_date_changed.传递任务和开始日期。fluent_boards/repeat_task_created//repeat_task_set.循环repeat_task_updated任务repeat_task生命周期。fluent_boards/before_task_deleted. 在任务被彻底删除之前触发。fluent_boards/template_converted_to_board/board_converted_to_template.模板转换事件。fluent_boards/after_enqueue_assets. 此事件在前端短代码处理程序将 CSS/JS 加载到队列后触发。您可以使用此事件将您自己的资源加载到前端面板视图中。fluent_boards/front_head/fluent_boards/front_footer. 前端门户的插槽<head>,以及插槽之前的部分</body>,以便您可以注入脚本或分析标签。
一个实际例子。将已完成的任务同步到 Slack 频道:
add_action('fluent_boards/task_completed_activity', function($task, $byUserId) {
$payload = [
'text' => sprintf(
'Task closed by %s: %s',
get_user_by('id', $byUserId)->display_name,
$task->title
),
];
wp_remote_post('https://hooks.slack.com/services/T000/B000/XXX', [
'body' => wp_json_encode($payload),
'headers' => ['Content-Type' => 'application/json'],
'timeout' => 5,
]);
}, 10, 2);过滤钩
Pro 插件的滤镜界面比其操作界面小,但现有的滤镜都放置在正确的位置。
fluent_boards/incoming_webhook_data获取原始有效负载和 webhook 配置。使用此方法可将第三方模式转换为 Fluent Boards 的任务模式。fluent_boards/webhook_task_data. 在有效载荷成为候选任务数组之后、任务插入之前运行。这是最后一次清理的机会。fluent_boards/invite_expiry_seconds默认值为 48 小时。传递一个整数来更改董事会邀请令牌的有效期。fluent_boards/no_permission_message. 当访客没有权限查看看板时,前端显示的字符串。fluent_boards/login_header前端门户登录表单上方的 H3 标签。fluent_boards/invitation_form_title/fluent_boards/invitation_form_registration_text. 电子邮件邀请注册表上的标签。fluent_boards/upload_media_data. 在持久化之前对附件有效负载进行清理。如果您想要强制执行最大文件大小或扩展名允许列表,这将非常有用。fluent_boards/before_create_board获取插入前的棋盘数组。可用于全局添加默认标签或阶段。fluent_boards/app_url//fluent_boards/docs_url.fluent_boards/community_support_url如果您对插件进行白标定制,则可以交换管理后台中的链接。fluent_boards/dashboard_notices在仪表盘横幅区域添加您自己的通知。
实际示例:拒绝大于 5 MB 的附件:
add_filter('fluent_boards/upload_media_data', function($data) {
if (isset($data['size']) && (int) $data['size'] > 5 * 1024 * 1024) {
wp_send_json_error([
'message' => 'Attachment exceeds 5 MB limit',
], 422);
}
return $data;
});短代码
Pro版附带两个短代码。
[fluent_board id="2"]. 在前端渲染单个看板。遵循看板的“可见性”设置,因此未经授权的访问者可以看到该fbs_no_permission板块。[fluent_boards].渲染完整的前端门户:用户可访问的面板,每个面板都可以点击进入自己的视图。
这两个短代码都采用延迟加载的方式,仅在短代码实际存在于渲染后的页面上时才加载资源。该插件使用了一种小的Shortcode_Hash_Detector模式,避免在每个公共页面上加载 200 KB 的 Vue 代码。
REST API 接口
该插件在命名空间fluent-boards/v2(core) 下公开其 REST 路由,并在同一命名空间下注册 Pro 路由。通过 WordPress nonce 和标准的 WP REST cookie 身份验证进行身份验证。以下是仅供 Pro 用户使用的路由,供集成商参考:
POST /projects创建一个板。主体将所有内容包裹在一个键中。board必需:title,,,。typecurrencyslugGET /projects/{id}获取包含阶段、标签、自定义字段和成员的看板。GET /projects/{id}/tasks看板的分页任务,可选择筛选。POST /projects/{id}/tasks创建任务。正文包含在内。task必需:title,,stage_id。board_idDELETE /projects/{id}/tasks/{taskId}删除任务。POST /projects/{id}/tasks/{taskId}/subtask-group创建子任务组。POST /projects/{id}/tasks/{taskId}/subtasks在组内创建子任务。POST /projects/{id}/custom-field创建一个董事会范围的自定义字段。GET /projects/{id}/dependencies获取看板的所有任务依赖关系(甘特图视图使用)。GET /templates//GET /templates/default.GET /templates/user列表板模板。POST /templates/create-from根据模板创建看板。POST /projects/{id}/send-invitation通过电子邮件邀请用户。
验证器需要的$request->get('board')是$request->get('task')包裹起来的对象,而不是扁平的请求体。我第一次就被这个问题难住了。请将你的 POST 请求体包裹起来:
// Correct
[
'board' => [
'title' => 'Q2 Editorial Calendar',
'type' => 'to-do',
'currency' => 'USD',
'slug' => 'q2-editorial',
],
]
// Incorrect (returns 500 from FluentBoardsFrameworkValidator)
[
'title' => 'Q2 Editorial Calendar',
'type' => 'to-do',
'currency' => 'USD',
'slug' => 'q2-editorial',
]数据库表
Pro 版本与核心版本共享相同的表格布局。这些表格(带有wp_前缀,或根据您的安装方式而定)如下:
wp_fbs_boards每块板子上放一行。wp_fbs_stages. 棋盘内的列。每阶段一行。外键为board_id.wp_fbs_tasks. 卡片。外键位于board_idand上stage_id。有parent_id子任务。wp_fbs_metas. 通用键/值元数据。用于循环任务配置、自定义字段值和一些插件选项。wp_fbs_relations多对多关系:看板上的用户、任务上的标签、关注者、指派人。wp_fbs_activities.活动日志条目(每次更改一条)。wp_fbs_comments任务评论。wp_fbs_labels. 彩色标签,板级范围。wp_fbs_time_tracks仅限专业版。时间跟踪行。wp_fbs_webhook_logs.传入/传出webhook传递日志。
表格布局非常简洁明了,可以直接阅读。我针对这个数据库编写的原始 SQL 语句比针对 REST API 编写的要多得多,因为对于“获取所有客户看板中所有逾期任务”这类一次性查询,使用 SQL 比考虑 API 接口要快得多。
FluentCRM 集成是制胜法宝。
这正是 Fluent Boards Pro 与“又一个 Trello 克隆版”的区别所在。如果您在同一安装环境中同时运行FluentCRM Pro (我建议您这样做;我最近写了一篇关于如何在 FluentCRM Pro 上运行电子邮件营销的教程),Fluent Boards 会注册一个名为“从模板创建看板”的漏斗操作。
您可以将此操作添加到任何 FluentCRM 流程中。当联系人到达该步骤时,Fluent Boards 会使用您预先创建的模板为该联系人创建一个全新的看板,并使用 FluentCRM 智能代码(例如 `<a>`{{contact.email}}或 `<a>` )预先填充标题和描述{{contact.first_name}}。您还可以自动将团队成员分配到新看板。
真正让我下定决心使用 Fluent Forms 的用例是客户入职流程。新客户通过 Fluent Forms 表单注册。表单会将他们引导至 FluentCRM 流程。流程的第三步会根据模板创建一个名为“入职:{{contact.first_name}} {{contact.last_name}}”的看板,其中包含“启动会议”、“需求分析”、“构建”、“审核”和“发布”等阶段,并将我和我们的项目经理分配到该看板。24 小时后启动会议召开时,看板已经创建完成,启动会议列中也已列出了相应的任务。
该集成通过标准类接入 FluentCRM 的漏斗系统BaseAction。该操作存在于看板创建时app/Services/Integrations/FluentCRM/BoardCreateAction.php触发fluent_boards/board_created_from_automation。如果您想扩展集成(例如,将联系人的 Fluent Forms 提交内容也作为任务描述附加),则需要在该接口中进行操作。
如果在同一安装中运行Fluent Forms Pro、Fluent Support 或 Fluent Booking Pro,您可以链接相同的模式:表单提交到 CRM 联系人再到看板创建,所有这些都不需要一个 Zapier zap。
性能、兼容性和注意事项
实话实说。这个插件不错,但并非完美无缺。
对性能的影响wp-admin: Fluent Boards Pro 的管理页面会加载一个相当大的 Vue 3 包(压缩前约 850 KB 的 JS 和 90 KB 的 CSS)。好消息是:它受到限制?page=fluent-boards,因此其他管理页面不会受到影响。坏消息是:在经济型共享主机上,管理页面冷启动可能需要 4 到 6 秒,因为需要时间解析该包。在 VPS 级主机上,速度则非常快。
对前端性能的影响:对于未使用短代码的页面,性能影响为零。该插件仅在检测到文章内容中包含短代码时才会加载前端资源[fluent_board]。[fluent_boards]对于使用短代码的页面,您需要加载相同的大型 Vue 包,因此请勿在首页放置看板。
与缓存插件的兼容性:将后台管理页面从页面缓存中排除(默认设置),并将论坛短代码页面从 JavaScript 延迟中排除(在 WP Rocket -> 文件优化中配置),即可与WP Rocket完美兼容。LiteSpeed Cache 和 W3 Total Cache 也需要类似的排除设置。
与后台管理主题的兼容性。Admin Columns Pro 和 Admin Menu Editor 都会干扰 Fluent Boards 的顶级菜单位置。请将 Fluent Boards 的“菜单位置”设置为“独立”,并配置您的后台管理主题,使其不影响fluent-boards菜单别名。
支持多站点。每个站点都有自己的看板和表格(带有站点前缀)。没有内置的“跨站点看板”视图。
WooCommerce不支持原生集成。虽然可以通过 Webhook 实现,但 WooCommerce 订单没有对应的漏斗操作。如果您销售产品并希望为每个订单创建一个看板,则需要自行编写代码,或者等待团队发布相关功能。
我遇到的那些陷阱。
- 验证器需要嵌套的斜杠
board键task。扁平的 REST 请求体返回 500 错误,并伴有令人困惑的 PHP 类型错误,而不是清晰的 422 错误。我已经向团队提交了这个问题,但尚未修复。 - 甘特图视图首次加载时不会自动调整大小。您必须缩小到月或季度才能看到全貌。最近的版本中添加了缩放级别刷新保持功能,但我仍然偶尔会看到它被重置。
- 背景颜色选择器只提供 20 种颜色,不能输入十六进制颜色代码。虽然只是个小问题,但它会在截图中显示出来,导致每张截图看起来都像我被分配到的那种鲑鱼粉色。
- “试用演示”Vue 应用会在热重载之间缓存 Vue store,因此在添加大量任务后的第一个小时内,UI 可能会显示过时的阶段计数,直到您进行硬重载。
- 移动端用户界面虽然存在,但明显不如桌面端完善。在 iOS Safari 上,拖放功能在处理标题较长的任务时经常出现问题。
诚实的负面评价。
- 甘特图和时间线视图比ClickUp或线性视图的功能更有限。它们不支持关键路径、资源平衡和蒙特卡罗模拟。
- Trello 的一些强大功能缺失:没有类似 Butler 的功能(自动化引擎涵盖了大多数模式,但不包括长尾模式),没有从附加图像中为每张卡片设置彩色封面,也没有原生时区感知截止日期功能。
- 在我的测试中,桌面版 Chrome 和 Safari 的拖放流畅度非常好,但在 Firefox 上则稍逊一筹。
- 移动端体验仍需改进。如果你的团队负责手机端开发,那么目前移动端体验还不够完善。
这些都不是决定性的因素,而是权衡取舍。你得到的是“可在 WordPress 中运行,并能与 FluentCRM 和 Fluent Forms 原生集成”,但代价是“不如 SaaS 市场领导者那样完善”。
常问问题
我需要安装免费的 Fluent Boards 插件才能让 Pro 版本运行吗?
是的。Pro 是一个附加组件,它会调用免费版核心程序的fluent_boards_loaded功能。如果免费版插件没有激活,Pro 版插件虽然会加载,但不会执行任何操作。请先安装免费版,再安装 Pro 版,然后同时激活这两个插件。
我可以从 Trello 或 Asana 迁移吗?
是的,两者都可以。Pro CSV 导入器读取 Trello 的 CSV 导出文件。Asana 导入器在您连接个人访问令牌后,通过 Asana API 直接导入看板和任务。两个导入器都不会导入附件;您需要重新上传附件。不要尝试一次性迁移三年的 Trello 历史记录。这会很麻烦。选择几个活跃的看板进行迁移,其余的则归档。
它是否兼容 Gutenberg 区块?
Fluent Boards 不注册 Gutenberg 区块。它公开了一些短代码(例如 `<script>`[fluent_board]和[fluent_boards]`<script>`),这些短代码可以在任何区块上下文中使用,包括短代码区块。团队已表示,原生区块已列入开发计划。
前端门户如何处理登录?
如果访客未登录并访问包含短代码的页面,Fluent Boards 会渲染一个fbs_login_form包含标准wp_login_form()输出的 div 元素。登录后,访客将被返回到同一页面。您可以通过筛选器自定义标题fluent_boards/login_header。
我可以在多站点环境下运行这个程序吗?
是的。每个站点都有自己的wp_<id>_fbs_*表格和看板。没有跨站点的控制面板。
它与 FluentCRM 有什么关系?
它们是同一供应商提供的独立插件。Fluent Boards 可以通过“从模板创建看板”流程操作选择性地与 FluentCRM 集成。您无需 FluentCRM 即可使用 Fluent Boards,但同时拥有两者可以解锁从联系人到看板的自动化模式,这对于客户工作来说非常实用。
MCP服务器是否已准备好投入生产环境?
我会把它当作测试版来对待。它虽然能用,但覆盖范围很小,而且我还没有在生产环境中进行压力测试。如果你要把它连接到 Claude Desktop 或内部代理,请先在测试环境中进行测试。
我可以删除插件并恢复我的数据吗?
是的。看板、阶段、任务和时间轨迹都存储在数据库中。卸载插件不会删除这些数据表(除非您在“设置”->“常规”中明确勾选了“删除数据”选项)。您可以稍后重新安装,并从上次中断的地方继续。
最后想说的
Fluent Boards Pro 是我用过的第一个 WordPress 项目管理插件,用了不到一周我就不会想换回 Trello。这对我来说是个很高的标准。我试过WP Project Manager Pro、Kanban for WordPress、Asana for WordPress(通过嵌入式安装)以及其他五六个插件。它们没有一个能在实际工作流程中坚持超过三天。
Fluent Boards Pro 的优势在于其集成性。看板本身并非产品,真正重要的是看板与 FluentCRM、Fluent Forms、外部 Webhook 以及 WordPress 数据库的交互。如果您已经在使用 Fluent 套件中的一两个组件,那么添加 Boards 就能为您构建一个真正的工作流程中心。如果您没有使用任何 Fluent 套件,Boards 本身也是一个不错的独立看板工具,但您错过了 Pro 版本一半的价值。
它的不足之处在于细节处理不够完善。甘特图功能齐全,但并不美观。移动端体验尚可,但并不出色。报表功能也比较简单。如果您需要的是托管式 SaaS 服务,那么它并不符合您的需求。但如果您可以接受这些不足之处,并希望“所有工作数据都集中在一个 WordPress 安装中”,那么它是我测试过的最佳选择。
实际使用两个看板后,我就再也没用过 Trello 了。Trello 的标签页仍然固定在我的浏览器里。已经一个月了。我想我不会再用回去了。

