乐于分享
好东西不私藏

自托管WordPress预约插件FluentBooking:彻底告别邮件循环的Calendly替代方案 - 易服客工作室

自托管WordPress预约插件FluentBooking:彻底告别邮件循环的Calendly替代方案 - 易服客工作室

       📎 原文来源:自托管WordPress预约插件FluentBooking:彻底告别邮件循环的Calendly替代方案 - 易服客工作室       https://gplwp.eastfu.com/fluentbooking-zi-tuo-guan-wordpress-yu-yue-cha-jian-ti-dai-c/

FluentBooking是自托管的WordPress预约插件,提供Calendly类似功能,数据完全由用户掌控。

  • 自托管WordPress预约插件,数据存于自己服务器
  • 支持双向日历同步、视频会议与团队调度
  • 提供付费预约、短信提醒及开发者API

关键术语:

  • 自托管:软件安装在自己服务器,数据本地存储,无需依赖第三方
  • Calendly替代:功能与Calendly类似,但运行在自有网站上
  • 双向日历同步:自动在双方日历创建/更新事件,避免冲突

如果你以预约通话为生,你一定对邮件循环深有体会:'你什么时间方便?”周二下午2点如何?”抱歉,那个时间我已有安排,周三呢?”周三不行,周四上午?'三天六封邮件后,你们终于敲定了一个时间段,但其中一人却忘了添加到日历。顾问、教练、沙龙、代理机构、支持团队、招聘人员——任何一周日程排满会议的人,每天都要经历这些。FluentBooking 就是为了打破这种循环而生的。它是一个自托管的WordPress预约插件,理念与Calendly类似,但运行在你自己的网站上。你发布一个预约页面,受邀者选择空闲时段,会议就会自动出现在双方的日历上。

这是一篇关于FluentBooking的详细、诚实的介绍:它是什么,日历和事件类型如何协同工作,如何创建第一个可预约的会议,为什么连接真实的日历是不可或缺的,以及底层的开发者钩子。无论你是只想摆脱邮件往来,还是想将预约集成到CRM系统中,读完本文后,你都会清楚了解这个插件的功能及其局限。

什么是FluentBooking?

FluentBooking 是由WPManageNinja开发的WordPress预约安排插件,该团队也是FluentCRM、Fluent Forms、Fluent Support、Fluent Boards、FluentSMTP和FluentCart的幕后开发者。如果你使用过Calendly或Cal.com这类托管工具,你会很快熟悉它的模式。你定义好愿意接受的会议类型,FluentBooking 为每种类型发布一个公开页面,然后人们就可以自行预约你的空闲时段,无需再给你发邮件。

区别在于它的运行位置。Calendly 是软件即服务:你的预约数据存储在他们的服务器上,并按用户每月付费。FluentBooking 运行在你自己的WordPress安装中。预约数据存放在你的数据库里,预约页面在你的域名上,而且没有按座计费。对很多WordPress网站所有者来说,单凭这一点就足够打动人了。

在深入探讨之前,先说一点期望。我最初以为它只是一个粗浅的'我也是' Calendly克隆版,那种只能处理理想情况、一遇到时区或缓冲时间就出问题的插件。但FluentBooking 远比那认真。它的数据模型清晰,钩子系统真实,显然继承了Fluent系列产品的工程习惯。它并不完美,我会具体指出其粗糙之处,但它值得认真审视。

主要功能

与其照搬功能列表,不如说说那些真正能改变你一周日程安排的功能。

  • 公开预约页面
     每种事件类型都有自己可分享的链接,配有Calendly风格的时间选择器。受邀者可以在自己的时区选择时间段,回答几个问题,然后预约完成。他们无需注册账户。
  • 双向日历同步。
     连接 Google Calendar、Outlook、Apple Calendar 或 Nextcloud,FluentBooking 既可读取您已有的日程(从而避免推荐您已忙碌的时间段),也会将新预约写回日历。这是最重要的功能,我们稍后会解释原因。
  • 内置视频会议。
     每次预约都自动生成 Google Meet、Microsoft Teams 或 Zoom 链接,让会议网址出现在确认函中,无需任何人费心。
  • 每份日历支持多种事件类型。
     例如“30 分钟介绍通话”、“15 分钟快速提问”、“60 分钟策略会议”,每种类型都有各自的时长、地点和预设问题。
  • 可复用的可用时段安排。
     只需定义一次工作时段(如“工作日上午”),然后为任意事件类型引用该安排,无需每次重新设置。
  • 团队与轮询调度。
     团队日历可将新预约分配给空闲的成员,这正是支持团队和代理机构共享会议收件箱的方式。
  • 群组活动。
     一位主持人,多位受邀者,适用于网络研讨会、办公时间或在线课程。
  • 缓冲时间。
     在每个会议前后预留几分钟,这样你就不用从一个电话会议直接冲刺到下一个。
  • 付费预约。
     在预约时收取费用,并可选择添加优惠券模块。
  • 通过 Twilio 发送短信提醒。
     通过提前向受邀者发送短信(而不仅仅是电子邮件)来减少缺席率。
  • 预约问题。
     在预约表单中添加自定义字段,这样你在进入通话前就已经知道会议内容。
  • 真正的开发者 API。
     使用斜杠命名空间的 action 和 filter 钩子,外加一些短代码,让你能对新预订做出响应,或将日历嵌入任何位置。

其中一部分在免费核心功能中,一部分在 Pro 版。据开发商称,高级排程(团队和循环、群组活动、支付、短信、优惠券模块)属于 Pro 版。我建议在官网上确认具体的功能划分,因为不同版本之间可能会有变动。

FluentBooking 的工作原理:日历、活动类型和预订

在触碰任何设置之前,先了解 FluentBooking 的三层模型是值得的,因为后台所有内容都映射到该模型上。弄懂这一点,插件的其余部分就不再像迷宫了。

其结构如下。

概念
含义
实际示例
日历
属于主持人(个人)或团队的容器
“Priya的日历”或”销售团队”
事件类型
日历中一种可预订的会议类型
“30分钟介绍通话”
可用时间
可重复使用的可预订时间安排
“工作日上午9点到12点”
预订
受邀方创建的一个已确认的预约
周二 10:30,Sam Lee,介绍通话

从头到尾读一遍,整个工具就通了。一个 日历 是您预约的拥有者,关联到单个主持人(一个 WordPress 用户)或一个团队。在该日历中,您可以创建一个或多个 活动类型,每个活动类型代表您愿意安排的一种会议形式。每个活动类型指向一个 可用性 日程表,指定何时可以预约。当受邀者实际选择了一个时间段时,FluentBooking 会创建一个 预约。就这么简单。日历、活动类型、预约,而可用性贯穿其中。

首先创建一个日历。从 日历 界面中点击 + 新建 会滑出一个面板,询问这是哪种日历: 个人 日历(一个人的), 团队 日历,或者 一次性活动. 选择 主办方,选择哪个WordPress用户拥有它,然后选择您想开始的事件类型模板。

最后一个选择是让新手困惑的分叉点,所以让我说明清楚。

  • 一对一
     是一个主办方和一个受邀者。这是核心场景:咖啡聊天、一对一面试、介绍电话、咨询。主办方是你,受邀者是任何预约的人。
  • 群组
     是一个主办方和一群受邀者共享同一个时间段。想象网络研讨会、在线课程或开放办公时间,十个人可以抢占同一个星期四下午4点的时段。

注意: 日历类型(主办方与团队)和事件模板(一对一与群组)是独立的决定,您按此顺序做出。团队日历搭配一对一事件就是轮询工作方式,预约会落到空闲的团队成员身上。群组活动和团队日程安排是专业版功能,因此在免费核心版中,您只能使用单个主办方的一对一预约,老实说,这已经足够满足大多数独立顾问的需求了。

拿 Calendly 来比是合理的,但我要指出一个实质区别。Calendly 非常偏重个人用户。而 FluentBooking 的“日历拥有活动类型”结构更像一个需要你管理的系统——当你在为整个团队管理预约时非常棒,但如果你只是想要一个链接的独立自由职业者,就会多几次点击。两者都没有错。问题在于你是以“我的链接”还是“我们的日历”来思考。

创建你的第一个活动类型

在这里你实际上创建了一个可预约的内容,这也是你最常使用的界面。选择“一对一”后,FluentBooking 会带你进入活动类型编辑器(标题为“添加一对一预约类型”)。别被字段数量吓到。前三个是真正必需的,其余都是合理的默认值,你可以之后调整。

从上到下逐项看看。

  • 活动名称。
     邀请者在预约页面看到的内容。要具体化。“30 分钟介绍通话”总比“会议”好,因为名称在任何人点击之前就设定了时长和目的预期。
  • 描述。
     一个富文本字段,用于填写详情:需要准备什么、你会介绍什么、预读资料链接。它会显示在公开页面的日期选择器旁边,所以把它当作你推广这个时段值得预约的“推销词”。
  • 会议时长。
     时段的长度,例如 30 分钟。在专业版中,你可以为同一个活动类型提供多个时长(15 分钟、30 分钟和 60 分钟),由邀请者选择。这对于“快速提问 vs 深入探讨”的通话来说,是一个非常贴心的设计。
  • 地点。
     这是会议发生的地点。可以选择:生成的 Google Meet、Microsoft Teams 或 Zoom 链接、面对面地址、电话呼叫或自定义地点。请仔细选择,因为它将填充到确认邮件中的会议链接。创建向导要求先设置地点才能最终确定活动,因此不能跳过。

向下滚动(进入专业版功能),你会看到将基础时段转变为真正日程工作流的控制选项:包括 可用性日程 此事件使用的 缓冲时间 前后,以及一个 日期范围 它限制了可预约的最大提前量(例如滚动“未来30天”可防止有人在3月预约你),最低提前通知时间,以免有人预约10分钟后的时段,以及 预约问题,添加到表单中的自定义字段让你在接听电话时就已经了解上下文。此外,还有关于预约被确认后的通知、确认和重定向处理。

保存后,该活动将拥有一个 公开预约页面 及其独有的链接,这部分我想仔细描述,因为这里没有截图(我测试的演示沙箱初始为空,无法植入一个直播预约页面或填充的预约列表来截图)。公开页面是邀请者看到的 Calendly 风格体验:一侧显示活动名称和描述,另一侧显示可选的日期日历,选定日期后,会显示该日期在 他们的 时区内的空闲时间段。他们选择一个时间段,回答你的预约问题,确认后即成功预约。他们会收到一封包含会议链接的确认邮件,你会收到通知,并且该预约会出现在你同步的日历上。

在管理后台,每个已确认的预约都会显示在 预约管理列表中,你可以查看谁预订了什么,按活动类型或状态筛选,并在一个界面中取消或重新安排。关键是,预约页面是面向邀请者的入口,而预约列表则是你查看所有通过该入口产生的预约的后台视图。

提示: 先创建一个用于测试的一次性活动类型,只需看看预约页面的渲染效果,然后再精心打造真实的活动类型。这大约需要两分钟,它能将抽象的“活动类型”概念具体化,这是任何设置界面都无法做到的。

可用性日程表:你的实际工作时间

可用性是一项不起眼的功能,它能将尊重你生活的预约工具与不尊重你生活的区分开来。在 FluentBooking 中, 可用性 日程表是一个可重复使用的、有名称的工作时间定义(“配置你可接受预约的时间”),你可以在“我的日程表”和“所有日程表”下管理它们。

可重复使用这一特性是高明之处。你只需一次定义“工作日上午”,比如周一至周五上午9点到中午12点,然后任何活动类型都可以引用它。以后修改这个日程表,所有使用它的活动都会立即更新。当然,你也可以让某个活动类型使用自己专属的工作时间,但对大多数人来说,几个共享的日程表(如“上午”、“下午”,或者“仅周五”)就足够了。

在 Pro 版本中,你还可以设置日期覆盖和重复可用性,这样你就可以为一个特定的周五安排会议而无需改动周度模式,或者在产品发布前临时增加一批额外的预约时段。这种功能在需要的那一周之前你都不会觉得有必要。

一个诚实的提醒:首次打开 FluentBooking 时,可用性列表是空的,因此新创建的活动类型在创建至少一个日程表之前无法接受预约。一旦知道这个步骤就显而易见,但它会让初学者觉得“为什么我的预约页面上没有时间段?”。请尽早创建一个日程表。

连接你的日历(以及它的重要性)

以下这个功能将 FluentBooking 从一个花哨的表单变成一个真正的预约助手:日历连接。你可以在“设置”下的某个位置找到它。 设置这里也是插件其他集成和全局选项的所在地。

集成列表涵盖了重要的连接,它们分为三类:

  • 日历同步(双向):
     Google Calendar、Outlook Calendar、Apple Calendar 和 Nextcloud Calendar。这四个是原生日历连接,而“双向”是关键所在。FluentBooking 会读取您现有的活动以检查冲突,并将新的预订写回,这样预约就会自动显示在您的常规日历上。
  • 视频会议:
     Google Meet(通过 Google)、Microsoft Teams(通过 Outlook)和 Zoom。连接其中一个后,FluentBooking 会在每次预订时生成一个新的会议链接,这样您就无需手动粘贴 Zoom 链接了。
  • 通信与收款:
     通过 Twilio 发送短信提醒,以及用于在预订时收费的支付设置。

同一个设置区域还包含全局管理功能:管理员邮箱、日历起始日、默认时间格式(12 小时制或 24 小时制)、会议结束后多久自动标记为已完成、未支付的预订多久后自动取消、电话字段的默认国家/地区,以及用于发送预订邮件的发件人名称和发件人邮箱。还有一个 团队 管理主持人的屏幕,以及一个 许可证 管理专业版密钥的屏幕。没什么特别的,但所有东西都集中在一处,这点我很欣赏。

那么,为什么双向日历连接如此重要,以至于我一直强调它?因为一个无法查看你真实日历的日程安排工具,就像一台不知道你有多忙的老虎机。连接 Google 或 Outlook 日历后,FluentBooking 会拒绝提供你已经预约了牙医的时段。跳过连接,它就会乐呵呵地提供那个时段,而你就重现了你安装这个插件要解决的确切重复预订问题。这就引出了你绝对不能做的事情。

在连接真实日历之前,不要分享预订链接

让我帮你免去一个尴尬的早晨。人们在使用任何日程安排工具(包括 FluentBooking)时,最常见的翻车方式就是在连接包含自己真实安排日历之前分享预订链接。

失败模式: FluentBooking 只有在能够查看你的日历时, 才能 你已有的事件及冲突检查都依赖双向同步。如果你直接获取公开链接发给客户,而没有先连接 Google、Outlook、Apple 或 Nextcloud,那么插件根本不知道你的日历上有什么。它会为你忙碌的时段提供可预约时间。客户预约了上午 10 点,而你此时正在参加团队站会,于是两个人分别在两个地方等你。这不是 bug。这是一个不了解你生活安排的日历。

同一个家庭里住着两兄弟。一个是 没有缓冲时间,因此预约一个接一个,你刚结束一个棘手的电话,下一个 Zoom 房间的陌生人已经等着了,连一秒钟喘气的时间都没有。另一个是 时区处理不当,被邀请者按他们所在时区看到的“下午 2 点”进行了预约,而你从未检查过时区行为,结果你迟到了一个小时,而对方坐在空房间里,以为你放了鸽子。

代价是真实的:错过的会议、客户盯着空视频通话的画面,以及你本来使用这个工具想避免的“他们失约了”的打击。信任很难重建,即使只是意外失约。

解决方法是一个五分钟的检查清单。连接你的日历(或多个日历)以进行双向冲突检查  你分享任何链接之前,为每种事件类型设置合理的缓冲时间,确认时区行为,并用无痕窗口测试预约你自己的链接,这样你就能看到被邀请者所看到的内容。做到这些,这类灾难就不会再发生了。

Fluent 套件优势

这正是 FluentBooking 区别于独立预约插件的地方,也是我专门推荐给已经在使用 WPManageNinja 生态系统的用户的原因。FluentBooking 是 Fluent 套件的一员,该套件由同一开发商打造,包含一系列相互协作的插件。 高级功能与插件 页面中你可以看到模块和推荐的配套插件。

该页面分为两部分。上半部分是 FluentBooking 自身的 高级模块,每个模块都是一个开关(默认均为关闭状态):

  • 前台门户。
     在前端加载 FluentBooking,而不仅仅在 WordPress 管理后台,因此接待人员无需进入仪表盘即可管理日程。适用于当你的“接待人员”是你不想让他们在 wp-admin 中操作的工作人员。
  • 优惠券模块。
     为付费预订添加了优惠券支持,这样你就可以对已付费的预约时段进行折扣。

下半部分是“推荐的插件和扩展”,提供了与预订搭配的兄弟插件的一键安装按钮:

  • FluentCRM。
     这是重头戏。将每个预约通话的人直接作为联系人推入你的CRM,并根据他们预约的活动进行标记,后续跟进流程自动运行。一次发现通话预约可以自动将该联系人放入“暖客”自动化流程中,无需你费心。
  • Fluent Forms。
     这是同一个团队的表单插件。如果你已经在使用Fluent Forms收集线索,两者共享相同的设计语言和相同的数据中心。
  • FluentCart。
     用于销售,当你希望围绕预约时段提供更完整的购物车和结账体验时,它与付费预订完美契合。
  • FluentSMTP。
     即可达性层。预订确认和提醒属于事务性邮件,FluentSMTP确保它们真正抵达收件箱而非垃圾邮件。这种搭配的重要性超乎想象,因为如果确认邮件进入垃圾箱,很可能导致预约者爽约。

其亮点在于: 如果你已经在使用 FluentCRM,那么预订到 CRM 的交接功能,否则你可能需要借助 webhook 并祈祷它正常运行。而在这里,它是原生连接。 美中不足: 如果你完全不在 Fluent 生态中,这个优势多半只是一种潜力,而不是你第一天就能感受到的。一个没有 CRM 的独立教练会得到一个功能完善的独立预订工具,但套件的协同效应才是选择 FluentBooking 而非竞品的原因,而不是因为它提供了某个通用功能。

FluentBooking 适合谁:五个真实场景

规格参数是抽象的。以下是 FluentBooking 在五种真实工作场景中的呈现。

独立教练。 你提供 60 分钟的教练课程和一次免费的 15 分钟探索通话。你创建两种活动类型,连接 Google 日历,这样你就永远不会因为接孩子而重复预约;为 60 分钟课程开启付费预订,这样支付在预订时完成。探索通话会导入 FluentCRM,因此每个线索都被标记并进入你的培育序列。你不再需要在私信中引用你的空闲时间。

沙龙或诊所。 你运行一个包含三位造型师的团队日历。团队日历上的“一对一”活动采用轮询方式,意味着客户预订“修剪和染色”,FluentBooking 会将其分配给任何空闲的造型师。预约之间的缓冲时间为每位造型师提供清理时间。通过 Twilio 发送短信提醒,减少了那些悄悄吞噬服务业务的爽约现象。

该代理机构。 你的销售团队在网站上分享了一个“预约演示”链接。轮询机制将演示均匀分配给团队成员,确保没有销售代表被压垮。预约时询问公司规模和当前使用的技术栈,这样销售代表在通话前就已掌握背景信息。预约记录作为商机进入你的CRM系统。

支持团队。 你为订阅特定套餐的客户提供“预约30分钟支持会话”服务。团队日历将会话分配给可用的工程师,预约时捕捉工单编号和问题描述,工程师到场时已了解情况,而非从零开始。

招聘人员。 你本周要安排20场首轮面试。你发布一个链接,候选人根据你的实际空闲时间自行选择时段,Google Calendar双向同步意味着你在别处接受的面试会立即关闭该时段,不再需要耗费招聘人员整个周一发邮件来回沟通。

你是否在其中看到了自己的影子?共同点是一样的:一个公开的链接、你的真实空闲时间,以及没有邮件循环。

FluentBooking vs Calendly(以及 vs Amelia)

这是大多数人真正关心的比较,所以我会公平对待三者,而不是一味鼓吹。Calendly 是品类之王,确实非常优秀。诚实的问题不是“哪个最好”,而是“哪个权衡适合你”。三个数字决定了整个决策:Calendly 的付费套餐大约每位用户每月 10 到 15 美元(约合 72 到 108 元人民币);FluentBooking 拥有 4 个原生双向日历同步,只需一次性授权;一个 10 人团队,按每人每月 12 美元计算,使用 Calendly 每年约 1,440 美元(约 10,368 元),而 FluentBooking 只需一个许可证。请记住这些数字。

因素
FluentBooking
Calendly
Amelia
托管模式
自托管于 WordPress
SaaS(他们的服务器)
自托管于 WordPress
免费层级
WordPress.org 上的完全免费核心
有限的免费计划
提供免费版本
定价模式
一个许可证(免费核心版 + 付费专业版)
每位用户每月
一个许可证
原生双向日历同步
4 种(Google、Outlook、Apple、Nextcloud)
Google、Outlook、iCloud、Office 365
Google、Outlook
数据所有权
你拥有它(你的数据库)
Calendly 拥有它
你拥有它
WordPress / CRM 集成
原生(Fluent 套件)
通过 Zapier / 原生应用
WordPress 原生

现在来谈谈数字和细微差别。

费用。 这是最根本的区别。根据 Calendly 官方定价,其付费版每用户每月大约 10 到 15 美元(约 72 到 108 元),并按团队规模收取经常性的按用户费用。FluentBooking 则颠覆了这一点:核心功能免费,Pro 版只需一次性(年度或终身)许可证费用,不按用户计费。如果你是个人用户,差额不大。但如果你是一个十人销售团队,十人 SaaS 订阅费与一个 WordPress 许可证的年费数字天差地别。

免费层级。 FluentBooking的免费核心功能对单个主持人来说确实可用:日历、事件类型、可用性和公开预订页面,全部免费。Calendly的免费计划也是真实的,但有上限(历史上仅一种事件类型,功能有限)。对于只需要一个预订链接且不追求花哨功能的自由职业者来说,FluentBooking的免费核心是更慷慨的起点。

日历集成。 FluentBooking自带四种原生双向日历同步(Google、Outlook、Apple、Nextcloud)。Calendly也涵盖了主要的几种。Nextcloud选项是一个有趣的例外,因为如果你已经在自托管日历(那种选择自托管预订的人),将Nextcloud作为一等公民选项是理念上的完美匹配。

Calendly的优势所在,对此我毫不掩饰。 Calendly更精致,预订流程流畅,且零维护,因为别人在运行服务器、修补安全漏洞和吸收流量高峰。使用FluentBooking,你需要自己负责正常运行时间。如果你的WordPress主机崩溃,你的预订页面也会随之崩溃。这就是自托管的真正成本,而且不容小觑。

FluentBooking的优势所在。 数据所有权(你的预订永远不会离开你的数据库),没有持续的按席位费用,以及与WordPress和Fluent套件的原生集成。如果你的业务已经运行在WordPress上,将预订保留在同一安装中而不是从第三方SaaS同步,是一个有意义的简化。

至于Amelia?它是另一个大型自托管WordPress预订插件,更偏向于服务和员工、预约业务模式(如沙龙、诊所),更侧重于员工、服务和精美的前端预订向导。FluentBooking则偏向Calendly风格的按主持人会议链接模式和Fluent套件集成。如果你想到“我有服务和员工以及店面”,请仔细看看Amelia(BookingPress也属于同类)。如果你想到“我有会议,我想要一个链接”,FluentBooking更合适。这里我想谨慎说明:我比较的是定位和已验证的功能表面,而不是基准测试原始速度,因为我没有受控的计时数据,也不会凭空捏造。

开发者参考:钩子(hooks)、过滤器(filters)和短代码(shortcodes)

这是 FluentBooking 赢得开发者信任的地方,也是让我从“不错的插件”转变为“我会在此基础上进行开发”的部分。WPManageNinja 的所有插件都采用斜杠命名空间的钩子约定(如果你扩展过 FluentCRM 或 Fluent Forms,你会认出这种模式),FluentBooking 也遵循这一约定。钩子命名看起来像 fluent_booking/some_event,这是一个小细节,却让在代码库中搜索变得愉悦。

关于集成接口,准确说明以免你基于错误假设进行开发。FluentBooking 确实注册了一个小的 fluent-booking REST 命名空间,但管理界面主要通过 WPManageNinja 自己的应用框架(其内部路由器)与服务器通信,而不是通过大型公共 REST 内容 API。因此,主要且可靠的扩展接口是 fluent_booking/*钩子 API 加上 短代码。不要围绕完整的公共 REST CRUD API 来规划集成,同样也不要假设完全没有 REST。基于钩子进行开发。

数据模型,一句话概括

在底层,它是 日历 (对应一个接待人员或团队)→ CalendarSlot(日历时段) (对应一个事件类型)→ Booking(预订),包含可重复使用的 Availability(可用性) 时间表为事件类型提供数据。如果你直接查询数据库表,这些就是你要找的模型(该插件还有 BookingHost、BookingActivity、BookingMeta 和 Staff 等辅助模型)。

你最常用的钩子:响应新预订

当预订被确认时,FluentBooking 会触发 fluent_booking/after_booking_scheduled。这是一个  用于在新预约到达时执行某些操作的钩子:将预订者推送到 CRM,向自己的服务发送 webhook,通知 Slack 频道,向外部系统写入一行数据。它传递三个参数,有一个值得注意的细节:第一个和第三个参数都是预订,第二个是日历事件。

add_action( 'fluent_booking/after_booking_scheduled', function ( $booking, $calendarEvent, booking and $bookingAgain are the same Booking model.     // $calendarEvent is the event type (CalendarSlot) that was booked.      $payload = [         'name'       => trim( $booking->first_name . ' ' . booking->email,         'event'      => booking->start_time,         'booked_via' => 'fluentbooking',     ];      wp_remote_post( 'https://example.com/webhooks/new-booking', [         'body'    => wp_json_encode( calendarEvent 就会变成 null,这是一个经典的让人困惑两分钟的 bug。

响应重新安排和新事件

当受邀者更改预约时间时, fluent_booking/after_booking_rescheduled 会触发新预订、旧预订和日历事件,因此你可以比较新旧差异(便于重新同步外部日历条目或记录更改)。

add_action( 'fluent_booking/after_booking_rescheduled', function ( $existingBooking, $previousBooking, existingBooking->id,         existingBooking->start_time     ) ); }, 10, 3 );

还有 fluent_booking/booking_schedule_completed它在日程完成后传递预订及其日历事件(两个参数),并且 fluent_booking/after_create_event它在创建新事件类型时触发,传递日历和新创建的槽位(两个参数)。

add_action( 'fluent_booking/after_create_event', function ( $calendar, $createdSlot ) {     // Mirror a freshly created event type into your own analytics, for example.     do_something_with_new_event( $calendar->id, $createdSlot->id ); }, 10, 2 );

一个 fluent_booking/before_booking 动作也存在,如果你需要在预订处理之前运行逻辑,以及围绕日历创建、预订元数据更新和可用性日程变化的底层钩子(fluent_booking/after_create_calendar, fluent_booking/availability_schedule_created 等等)。

筛选预订表单字段

你最常使用的过滤器是 fluent_booking/booking_fields它允许你按事件类型自定义预订表单上的字段。它接收当前字段数组和日历槽位(事件类型),因此你可以有条件地添加、删除或调整问题。

add_filter( 'fluent_booking/booking_fields', function ( $fields, $calendarSlot ) {     // Add a "company" field only on the sales-demo event type.     if ( $calendarSlot && 'book-a-demo' === $calendarSlot->slug ) {         fields; }, 10, 2 );

其他值得了解的过滤器名称: fluent_booking/admin_menu_items (调整管理员菜单), fluent_booking/accepted_currencies (付费预约的货币列表), fluent_booking/available_slots_for_view (调整哪些时段显示), fluent_booking/auto_create_calendar,以及 fluent_booking/booking_export_columns (定制导出预约的列)。对于较少使用的过滤器,在使用前请确认其在源代码中的确切参数,因为以上主要过滤器的签名我已经核实过。

短代码:在任何地方嵌入预约

您无需将用户引导至托管的预约页面。FluentBooking 注册了短代码,因此您可以将预约直接嵌入到普通的 WordPress 页面或文章中。主要的是 [fluent_booking_calendar],它会将一个预约日历或事件插入到页面中。

[fluent_booking_calendar id="123"]  所有注册的短代码完整列表为  [fluent_booking_calendar], [fluent_booking], [fluent_booking_lists], [fluent_booking_receipt],以及[fluent_booking_team] 。因此,你可以创建完全符合品牌形象的预订页面,显示团队的综合可用性,或在付费预订后生成收据,而无需将受邀者引导至单独的托管页面。对大多数人来说,嵌入短代码才是关键:这意味着你的预订流程存在于你的网站、你的设计中,而不是第三方域名上。

常见问题

FluentBooking 免费吗? 部分是。WordPress.org 上有一个真正可用的免费核心版,涵盖日历、活动类型、可用性和单一位主持人的公开预订页面。FluentBooking Pro 是付费层级,增加了团队和轮循排程、群组活动、支付、短信提醒和更深入的集成。因此,您可以免费开始使用,并在功能无法满足需求时再升级,而不是一开始就付费。

FluentBooking 真的是 Calendly 的替代品,还是只是“类似 Calendly”? 对于核心功能来说,它确实是一个替代方案:发布一个链接,让人们根据您的实际可用时间自行预订,自动创建会议。诚实的权衡在于精致度和维护。Calendly 的流程更精良,而且零维护,因为它为您托管。FluentBooking 让您拥有数据所有权且无需支付按席位费用,但您需要自行负责托管和正常运行时间。对于大多数基于 WordPress 的企业来说,这是一个值得的权衡;对于希望获得最流畅体验且无需任何维护的人来说,Calendly 仍然有优势。

我必须连接 Google 或 Outlook 才能使用吗? 从技术上讲,不需要,预订页面无需连接即可工作。但实际上,是的,您应该连接。没有连接的日历,FluentBooking 无法看到您已有的日程安排,因此无法防止重复预订,而这正是使用排程工具的主要原因。在分享任何链接之前,请连接 Google、Outlook、Apple 或 Nextcloud。这是您绝对不能偷懒的一个环节。

受邀者可以在预订时支付吗? 可以,Pro 版支持。你可以在预订时通过支付设置对每次会话收费,并且有优惠券模块用于对付费预订进行折扣。自动取消设置还会清理未及时完成支付的预订,这样你就不会留下无效占位。

它是否支持团队和轮询调度? 可以,Pro 版支持。你可以创建团队日历,FluentBooking 会将预订分配给任一可用的团队成员(轮询)。这就是机构分享“预约演示”链接以及沙龙在员工之间分配预约的方式。免费核心版专注于单主机的预订,因此团队调度是升级到 Pro 版的一个理由。

FluentBooking 会导致我重复预订吗? 除非你没有连接日历。冲突检测完全依赖于双向日历同步。连接 Google、Outlook、Apple 或 Nextcloud 日历后,FluentBooking 会读取你已有的活动,并隐藏你已经忙碌的时间段。跳过连接,它就无法知道你是否忙碌,因此会提供那些时间段。还可以设置缓冲时间,这样你就不会连续安排通话而没有喘息空间。

它能与 FluentCRM 集成吗? 可以,这也是如果你已经在使用 Fluent 产品套件时选择它的突出理由。你可以将预订人作为联系人推送到 FluentCRM,并基于预订触发自动化,这样一次发现通话就可以将潜在客户直接放入培养序列中。它同样能与 Fluent Forms、用于销售的 FluentCart 以及确保确认邮件真正到达收件箱的 FluentSMTP 配合使用。

我是否可以将预订日历嵌入到页面中,而不是使用托管链接? 可以。FluentBooking 注册了短代码,并且 [fluent_booking_calendar] 可以直接将预订日历或活动放入任何页面或文章中,这样预订流程就存在于你自己的网站上,并由你自己设计。还有用于列表、收据和团队视图的短代码。相比于将每个人引导至单独的托管域名,这是一个不错的优势。

FluentBooking Pro 版本相比免费核心版是否值得购买? 这取决于你是个人用户还是团队。如果是只需要一个链接和日历冲突检查的独立顾问,免费核心版完全可以长期使用。当你需要团队或轮流调度、团体活动、付费预约、短信提醒或更深层次的自动化功能时,Pro 版本提供了这些能力,而且其一次性授权模式(相比按席位定期付费的 SaaS 费用)对成长中的团队颇具吸引力。

如果停止为 Pro 版本付费,我的预约数据会怎样? 你的预约数据存储在自己的 WordPress 数据库中,因此无论如何数据都属于你。免费核心版会继续运行。你会失去 Pro 专有功能(团队调度、支付、短信等),但不会像担心 SaaS 账户过期那样丢失预约记录本身。这种数据的持久性是自托管的一个隐性优势。

总结

在使用 FluentBooking 管理后台一段时间后,我的看法是:这是一个严肃的自托管版 Calendly 替代方案,当你已经是 WordPress 和 Fluent 系列产品的用户时,它发挥得最为出色。其日历事件类型预约模型简洁明了,可用时间安排可重复使用,四个双向日历同步完成了真正重要的一件事(避免重复预约),而且钩子 API 足够实用,你可以将预约数据连接到 CRM 或 webhook 而无需与插件搏斗。

它并非完美无缺,如果我说它是完美的,那是在撒谎。安装后界面为空,这意味着新手需要知道先创建一个可用时间安排,然后才会出现可预约的项目;而且“日历拥有事件类型”的结构比 Calendly 的个人优先感觉多了一点管理负担。至于套件优势(这也是选择它的真正原因),如果你不使用其他 Fluent 插件,这个优势就基本无法体现。但这些都不是致命问题。这就是这个工具的真实面貌。

至于官方资料,FluentBooking 网站上有供应商的功能详解,WordPress.org 上的免费核心版是快速试用的最佳途径,而上面的钩子遵循标准的 WordPress 插件 API 约定,如果你想深入了解动作和过滤器的触发机制。


点击左下角“阅读原文”获得文中的WordPress主题/插件长按图片添加微信客服咨询如何搭建企业网站、商城、在线教育、跨境电商、私域小程序和会员系统网站等。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-05 10:22:35 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/833339.html
  2. 运行时间 : 0.123942s [ 吞吐率:8.07req/s ] 内存消耗:4,751.59kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=2643011ebe9f4c9b4fbcc6a7200e57da
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000557s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000842s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000336s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000271s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000475s ]
  6. SELECT * FROM `set` [ RunTime:0.000193s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000587s ]
  8. SELECT * FROM `article` WHERE `id` = 833339 LIMIT 1 [ RunTime:0.000544s ]
  9. UPDATE `article` SET `lasttime` = 1783218155 WHERE `id` = 833339 [ RunTime:0.013825s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000335s ]
  11. SELECT * FROM `article` WHERE `id` < 833339 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000530s ]
  12. SELECT * FROM `article` WHERE `id` > 833339 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000386s ]
  13. SELECT * FROM `article` WHERE `id` < 833339 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.004538s ]
  14. SELECT * FROM `article` WHERE `id` < 833339 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002879s ]
  15. SELECT * FROM `article` WHERE `id` < 833339 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.018053s ]
0.125547s