Query Monitor

描述

Query Monitor 是适用于 WordPress 和 WooCommerce 的开发者工具面板。它可以调试数据库查询、PHP 错误、钩子和动作、区块编辑器区块、已加入队列的脚本和样式表、HTTP API 调用等。

它包含一些高级功能,例如调试 Ajax 调用、REST API 调用、用户权限检查,并完全支持区块主题和全站编辑。它还能按插件或主题筛选大部分输出内容,帮助您快速找出性能不佳的插件、主题或函数。

Query Monitor 非常注重以实用的方式呈现信息,例如按产生数据库查询的插件、主题或函数对查询进行分组聚合显示。它会在工具栏中添加一个菜单,显示当前页面的概览;选择菜单项后,即可在面板中查看完整的调试信息。

Query Monitor 支持最多三年前的 WordPress 版本以及 PHP 7.4 或更高版本。

有关完整信息,请参阅 Query Monitor 网站。

以下是每次页面加载时所显示内容的概览:

  • 数据库查询,包括针对慢查询、重复查询或出错查询的通知。支持按查询类型(SELECT、UPDATE、DELETE 等)、相关组件(插件、主题、WordPress 核心)和调用函数进行筛选,并分别提供单独的聚合视图。
  • 模板文件名、完整的模板层级结构,以及所有已加载或未加载的模板组件名称(适用于区块主题和经典主题)。
  • 清晰呈现的 PHP 错误及其相关组件和调用堆栈,并在工具栏中显示醒目的警告。
  • 您站点代码中对「用法错误」或「已弃用」功能的使用情况。
  • 文章内容和全站编辑(FSE)中的区块及其相关属性。
  • 匹配的重写规则、关联的查询字符串和查询变量。
  • 已加入队列的脚本和样式表,以及它们的依赖和被依赖项,并对损坏的依赖发出警报。
  • 每个文本域的语言设置和加载的翻译文件(MO 文件和 JSON 文件)。
  • HTTP API 请求,包括响应代码、相关组件和耗时,并对失败或出错的请求发出警报。
  • 用户权限检查,以及检查结果和传递给权限检查的所有参数。
  • 环境信息,包括有关 PHP、数据库、WordPress 和 Web 服务器的详细信息。
  • 所有 WordPress 条件函数的值,例如 is_single()、is_home() 等。
  • 已更新的瞬态数据。
  • 多站点安装中 switch_to_blog() 和 restore_current_blog() 的使用情况。

此外:

  • 每当发生重定向时,Query Monitor 都会添加一个包含调用堆栈的 HTTP 标头,以便您使用喜欢的 HTTP 检查工具或浏览器开发者工具来追踪触发重定向的原因。
  • 页面上任何由 jQuery 发起的 Ajax 请求,其响应标头中都会包含各种调试信息。PHP 错误也会输出到浏览器的开发者控制台。
  • 只要经过身份验证的用户有权查看 Query Monitor 的输出,经过身份验证的 WordPress REST API 请求的响应标头中就会包含性能信息和 PHP 错误的概览。封装的 REST API 请求 还会在响应的 qm 属性中包含更多调试信息。

默认情况下,Query Monitor 的输出仅对单站点安装中的管理员以及多站点安装中的超级管理员显示。

除此之外,您还可以设置身份验证 Cookie,这样即使在未登录时(或以非管理员身份登录时),您也能查看 Query Monitor 的输出。详情请参阅「设置」面板。

浏览器扩展

Query Monitor 还提供可选的浏览器开发者工具扩展,可替代输出到工具栏中的页面内面板。

与页面内面板相比,使用浏览器扩展有以下优势:

  • Query Monitor 面板不会占用您正在检查的页面的空间
  • 面板可以像其他开发者工具面板一样调整大小、取消停靠和随意移动

在此处查看 Query Monitor 浏览器扩展的相关信息。

其他插件

我还维护着其他几款面向开发者的插件,欢迎了解:

  • User Switching 可让您在 WordPress 的用户账户之间即时切换。
  • WP Crontrol 可让您查看和控制 WP-Cron 系统中发生的情况

致谢

我维护本插件及其他插件所花费的时间,部分由以下各方赞助:

隐私声明

Query Monitor 默认是私密的,并将始终如此。它不会持久存储所收集的任何数据,不会向任何第三方发送数据,也不包含任何第三方资源。在此处查看 Query Monitor 的完整隐私声明。

无障碍声明

Query Monitor 致力于让所有用户都能无障碍地使用。在此处查看 Query Monitor 的完整无障碍声明。

屏幕截图

常见问题

这个插件可以在 PHP 8 上使用吗?

是的,它经过持续测试,最高可在 PHP 8.5 上正常运行。

谁可以查看 Query Monitor 的输出?

默认情况下,Query Monitor 的输出仅对单站点安装中的管理员以及多站点安装中的超级管理员显示。

除此之外,您还可以设置身份验证 Cookie,这样即使在未登录时,或以通常无法查看 Query Monitor 输出的用户身份登录时,您也能查看 Query Monitor 的输出。详情请参阅「设置」面板。

Query Monitor 本身会影响页面生成时间或内存占用吗?

简短回答:会,但只有一点点。

详细回答:Query Monitor 会对页面生成时间产生轻微影响,因为它和其他插件一样,会挂接到 WordPress 中的若干位置。这种影响可以忽略不计。

在数据库查询数量特别多(数以百计)的页面上,Query Monitor 目前占用的内存比我期望的要多。这是由于每条查询的堆栈跟踪中捕获的数据量较大。我一直在、也将继续努力降低内存占用。

我能否阻止 Query Monitor 在长时间运行的请求中收集数据?

是的,您可以调用 do_action( 'qm/cease' ),让 Query Monitor 在本次页面生成的剩余过程中停止运行。它将不再收集任何数据,丢弃目前已收集的所有数据,并跳过信息输出。

对于执行大量数据库查询、消耗大量内存,或是 Query Monitor 无需关注的长时间运行操作,这一功能非常有用,例如:

  • 备份或恢复您的站点
  • 导入或导出大量数据
  • 运行安全扫描

Query Monitor 有附加组件插件吗?

在此处查看 Query Monitor 的附加组件插件列表。

此外,Query Monitor 无缝支持 Debug Bar 插件的附加组件。如果您安装了 Debug Bar 附加组件,请停用 Debug Bar,这些附加组件就会显示在 Query Monitor 的菜单中。

我可以在哪里建议新功能或报告 Bug?

请使用 Query Monitor GitHub 仓库中的问题跟踪器,因为在那里跟踪问题比在 wordpress.org 支持论坛上更方便。

我的主机是否已内置 Query Monitor?

一些主机商会将 Query Monitor 作为其托管平台的一部分预先集成,这意味着您无需自行安装。以下是我所知道的一些主机商:

我可以点击堆栈跟踪,在编辑器中打开对应文件吗?

是的。您可以在「设置」面板中启用此功能。

我该如何报告安全 Bug?

您可以通过 GitHub 仓库的 Security 标签页 向 Query Monitor 私下提交安全漏洞报告。GitHub 安全公告(Security Advisory)流程便于就安全问题进行私下协作。有效的报告将获得致谢,必要时还会分配 CVE 编号。

请不要在 WordPress.org 支持论坛上或通过邮件报告安全问题。谢谢。

您接受赞助吗?

我通过 GitHub Sponsors 计划接受赞助。如果您所在的机构使用 WordPress 进行开发,请让贵公司提供赞助,以投资其供应链。我维护的工具很可能为贵公司节省了时间和金钱,而且现在可以以组织身份进行 GitHub 赞助。

此外,如果您喜欢本插件,欢迎 留下评价。也请把它推荐给您的朋友们!

评价

2026 年 8 月 26 日
This is an absolute must have for plugin development.
2026 年 7 月 7 日
This plugin does an excellent job of displaying information that is helpful in troubleshooting while working on WordPress theme and plugin development. I appreciate how PHP errors and deprecation warnings are grouped together and moved away from the published page view. Being able to see transient updates and SQL queries at a glance is so nice.
2026 年 5 月 23 日
Saved my sanity today, (Orderable had been calling on a youtube link and added each page load 5s)
2026 年 4 月 20 日
I've been using Query Monitor since 2023, and I honestly can't imagine debugging WordPress sites without it anymore. It's not just a plugin, it's a complete developer toolbox that sits in the admin bar. It's lightweight enough to keep running on production sites without noticeable overhead. John Blackbourn has built something truly special here. Five stars isn't enough. Thank you for this masterpiece.
2026 年 4 月 8 日
This plugin helped me realize a problem right in front of my eyes this whole time. A fantastic tool for troubleshooting database issues!
2026 年 3 月 27 日
If you've even the smell of an issue with your site, this will track it down so that you can fix it. An indispensable tool for developers.
阅读所有469条评价

贡献者及开发者

「Query Monitor」是开源软件。 以下人员对此插件做出了贡献。

贡献者

「Query Monitor」插件已被翻译至 28 种本地化语言。 感谢所有译者为本插件所做的贡献。

帮助将「Query Monitor」翻译成简体中文。

对开发感兴趣吗?

您可以浏览代码,查看SVN仓库,或通过RSS订阅开发日志。

更新日志

4.0.7(2026 年 6 月 20 日)

  • 确认支持 WordPress 7.0
  • 改进工具栏菜单
  • 即使 db.php 不存在,也会在时间线上显示数据库查询
  • 针对已加入队列的 JavaScript 和 CSS 依赖问题,新增更多错误高亮提示
  • 新增对旧版 Chrome 浏览器的部分向后兼容支持

4.0.6(2026 年 4 月 11 日)

Query Monitor 第 4 版新增了时间线视图,并将面板的渲染方式从在服务器端用 PHP 渲染,改为在客户端用 Preact 高效渲染。

4.0.6 版本修复了与 GeneratePress 主题的兼容性问题。

更多信息请访问 querymonitor.com/4。

4.0.5(2026 年 4 月 10 日)

Query Monitor 第 4 版新增了时间线视图,并将面板的渲染方式从在服务器端用 PHP 渲染,改为在客户端用 Preact 高效渲染。

4.0.5 版本修复了以下问题:

  • 确保数据中的 script 闭合标签不会破坏输出
  • 在时间线视图中新增「用法错误」数据

更多信息请访问 querymonitor.com/4。

4.0.4(2026 年 4 月 10 日)

Query Monitor 第 4 版新增了时间线视图,并将面板的渲染方式从在服务器端用 PHP 渲染,改为在客户端用 Preact 高效渲染。

4.0.4 版本修复了以下问题:

  • 确保页头中没有已加入队列的脚本时,「脚本」面板仍然可见
  • 修正部分地区语言下数字格式的显示问题

更多信息请访问 querymonitor.com/4。

4.0.3(2026 年 4 月 9 日)

Query Monitor 第 4 版新增了时间线视图,并将面板的渲染方式从在服务器端用 PHP 渲染,改为在客户端用 Preact 高效渲染。

4.0.3 版本修复了以下问题:

  • 改进与执行非 UTF8 查询或以其他方式使用非 UTF8 数据的插件的兼容性
  • 避免在部分堆栈跟踪帧中因文件和行号未定义而产生 PHP 警告
  • 简化并统一闭包回调的名称格式
  • 改进时间线视图的样式和布局

更多信息请访问 querymonitor.com/4。

4.0.2(2026 年 4 月 9 日)

Query Monitor 第 4 版新增了时间线视图,并将面板的渲染方式从在服务器端用 PHP 渲染,改为在客户端用 Preact 高效渲染。

4.0.2 版本修复了以下问题:

  • 进一步增强对第三方插件的向后兼容性,这些插件会从 QM 数据收集器读取数据并输出自己的面板
  • 在时间线视图中新增瞬态数据更新

更多信息请访问 querymonitor.com/4。

4.0.1(2026 年 4 月 7 日)

Query Monitor 第 4 版新增了时间线视图,并将面板的渲染方式从在服务器端用 PHP 渲染,改为在客户端用 Preact 高效渲染。

  • 4.0.1 版本修复了与在 Query Monitor 中注册自有菜单或子菜单的插件之间的向后兼容性问题。

更多信息请访问 querymonitor.com/4。

4.0.0(2026 年 4 月 7 日)

Query Monitor 第 4 版新增了时间线视图,并将面板的渲染方式从在服务器端用 PHP 渲染,改为在客户端用 Preact 高效渲染。这种新方式带来了以下好处:

  • 性能大幅提升,尤其是在执行大量查询、触发大量 PHP 错误,或在其他某个面板中收集了大量数据的站点上。
  • 为未来的进一步增强奠定了基础,例如显示客户端指标、延迟加载数据、显示来自不同请求的数据,以及将数据重新组合成更多不同的视图。
  • Query Monitor 收集的原始数据在体积和内存占用上均有所减少,并且现在会以 JSON 形式提供给页面。您可以在浏览器控制台中查看 QueryMonitorData 对象,动手试一试。

更多信息请访问 querymonitor.com/4。

3.20.4(2026 年 3 月 19 日)

3.20.3(2026 年 3 月 17 日)

  • 现在在工具栏中再次点击 QM 将关闭面板
  • 改进切换按钮的无障碍性
  • 失败的 HTTP API GET 请求现在会显示可点击的链接

早期版本

有关早期版本的变更日志,请参阅 GitHub 上的发布页面。