描述
Query Monitor 是 WordPress 的开发人员工具面板。它可以调试数据库查询、PHP 错误、挂钩和操作、块编辑器块、排队脚本和样式表、HTTP API 调用等。
它包括一些高级功能,例如 Ajax 调用调试、REST API 调用、用户能力检查以及对块主题和完整站点编辑的完全支持。它包括通过插件或主题缩小大部分输出范围的能力,使您可以快速确定性能不佳的插件、主题或功能。
查询监视器重点关注以有用的方式呈现其信息,例如通过显示按负责它们的插件、主题或函数分组的聚合数据库查询。它添加了一个管理工具栏菜单,显示当前页面的概述,一旦您选择菜单项,面板中就会显示完整的调试信息。
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()
。
此外:
- 每当发生重定向时,查询监视器都会添加一个包含调用堆栈的 HTTP 标头,因此您可以使用您最喜欢的 HTTP 检查器或浏览器开发人员工具来跟踪触发重定向的内容。
- 页面上任何 jQuery 发起的 Ajax 请求的响应都将在其标头中包含各种调试信息。 PHP 错误也会输出到浏览器的开发人员控制台。
- 只要经过身份验证的用户有权查看查询监视器的输出,来自经过身份验证的 WordPress REST API 请求的响应将在其标头中包含性能信息和 PHP 错误的概述。 封装的 REST API 请求将包含更多调试响应的
qm
属性中的信息。
默认情况下,查询监视器的输出仅向单站点安装的管理员显示,对于多站点安装的超级管理员显示。
除此之外,您还可以设置一个身份验证 cookie,允许您在未登录时(或者以非管理员身份登录)查看查询监视器输出。有关详细信息,请参阅“设置”面板。
其它插件
我为开发人员维护了几个其他插件。去看一下:
- 用户切换提供 WordPress 中用户帐户之间的即时切换。
- WP Crontrol 可让您查看和控制 WP-Cron 系统中发生的情况
隐私声明
查询监视器默认是私有的,并且永远都是私有的。它不会持久存储其收集的任何数据。它不向任何第三方发送数据,也不包含任何第三方资源。 可在此处找到 Query Monitor 的完整隐私声明。
无障碍声明
Query Monitor 的目标是让所有用户都能完全访问。 可以在此处找到 Query Monitor 的完整辅助功能声明。
屏幕截图
常见问题
-
这个插件可以在 PHP 8 上使用吗?
-
是的,它已经过积极测试,最高可达 PHP 8.4。
-
谁可以看到查询监视器的输出?
-
默认情况下,查询监视器的输出仅向单站点安装的管理员显示,对于多站点安装的超级管理员显示。
除此之外,您还可以设置一个身份验证 cookie,该 cookie 允许您在未登录时或以通常无法查看查询监视器输出的用户身份登录时查看查询监视器输出。有关详细信息,请参阅“设置”面板。
-
查询监视器本身是否会影响页面生成时间或内存使用情况?
-
简短的回答:是的,但只有一点点。
长答案:查询监视器对页面生成时间的影响很小,因为它以与其他插件相同的方式挂接到 WordPress 中的几个位置。影响可以忽略不计。
在数据库查询数量特别多(数百个)的页面上,查询监视器当前使用的内存比我希望的要多。这是由于每个查询的堆栈跟踪中捕获的数据量所致。我一直并将继续努力不断减少这种情况。
-
我可以阻止查询监视器在长时间运行的请求期间收集数据吗?
-
是的,您可以调用
do_action( 'qm/cease' )
来指示查询监视器停止页面生成的剩余操作。它将脱离进一步的数据收集,丢弃迄今为止收集的所有数据,并跳过其信息的输出。这对于执行大量数据库查询、消耗大量内存或查询监视器不关心的长时间运行操作非常有用,例如:
- 备份或恢复您的网站
- 导入或导出大量数据
- 运行安全扫描
-
查询监视器有任何附加插件吗?
-
此外,查询监视器透明地支持调试栏插件的附加组件。如果您安装了任何调试栏附加组件,请停用调试栏,附加组件将显示在查询监视器的菜单中。
-
我可以在哪里建议新功能或报告错误?
-
请使用Query Monitor 的 GitHub 存储库上的问题跟踪器,因为在那里跟踪问题比在wordpress.org 支持论坛。
-
我的主机中是否已包含查询监视器?
-
一些 WordPress 主机将 Query Monitor 捆绑作为其托管平台的一部分,这意味着您不需要自己安装它。以下是我所知道的一些内容:
- Altis 云。
- WordPress VIP,尽管用户需要被授予
view_query_monitor
功能,即使他们是管理员。 有关详细信息,请参阅 WordPress VIP 文档。
-
我可以单击堆栈跟踪以在编辑器中打开文件吗?
-
是的。您可以在“设置”面板上启用此功能。
-
我如何报告安全错误?
-
您可以通过 Patchstack 上的官方 Query Monitor 漏洞披露计划报告安全错误。 Patchstack 团队帮助验证、分类和处理任何安全漏洞。
-
你们接受捐款吗?
-
我正在通过 GitHub 赞助商计划接受赞助. 如果您在一家使用 WordPress 开发的机构工作,请要求您的公司提供赞助以投资其供应链。我维护的工具可能会节省您公司的时间和金钱,并且 GitHub 赞助现在可以在组织级别完成。
此外,如果您喜欢该插件,那么我希望您留下评论。也告诉你所有的朋友吧!
评价
贡献者及开发者
更新日志
3.17.0 (27 November 2024)
- 支持 WordPress 6.7。
- 支持 PHP 8.4。
- 内联脚本现在使用
wp_print_inline_script_tag()
输出,因此可以完全实施内容安全策略。 - 各种改进和修复。
3.16.4 (25 July 2024)
- 确认支持 WordPress 6.6。
3.16.3 (22 May 2024)
- 在记录错误调用和不推荐使用的调用时防止无限循环。
- 从 query-monitor.php 中删除全局
3.16.2 (22 May 2024)
- 修复了 3.16.0 和 3.16.1 中 PHP 自动加载器导致某些网站崩溃的另一个问题
3.16.1 (22 May 2024)
- 修复了 3.16.0 中 PHP 自动加载器导致某些网站崩溃的问题
3.16.0 (22 April 2024)
- 添加对 WordPress 6.5 中调试新功能的全面支持:JavaScript 模块和 PHP 翻译文件
3.15.0 (10 November 2023)
- 通过
qm/assert
操作添加新的断言功能 - 确认插件已测试至 WordPress 6.4
3.14.1 (21 October 2023)
- 提高了与 WordPress Playground 的兼容性
3.14.0 (18 October 2023)
- 更正了显示脚本和样式的 URL 时的端口号处理
- 改进了在多站点网络中的单个站点上激活和停用查询监视器以及使用
DISALLOW_FILE_MODS
时的db.php
处理 - 改进了对调试栏是否存在的检查
- 将嵌入式插件标识为特定组件而不是“其他”
- 简化记录查询时使用的一些数据结构
- 指定 Query Monitor 支持最多三年前的 WordPress 版本
3.13.1 (15 July 2023)
- 如果在引导过程中尽早触发已弃用的警告,则可以避免致命错误
- 避免在未使用 Curl 时在某些 HTTP API 请求期间可能触发的 PHP 警告
- 在插件更新过程中跳过加载 QM
Earlier versions
有关早期版本的变更日志,请参阅 GitHub 上的发布页面。