调试是指在您构建的任何软件中发现和修复错误。它是 WordPress 主题开发的重要组成部分,无论您是构建块级主题还是经典主题。

WordPress 提供了一些开箱即用的工具,但也有插件可供使用以增强体验。您将在此文章中了解其中一些方法,但您还应该研究 Common APIs 手册中的 WordPress 调试 文档。

调试常量

当在开发环境中创建主题时,您应该始终启用调试,以确保您的主题不会生成通知或错误。WordPress 提供了一些常量,您可以在安装的 wp-config.php 文件中设置它们。

如果您打开 wp-config.php 文件,向下滚动直到找到以下代码:

/**
 * For developers: WordPress debugging mode.
 *
 * Change this to true to enable the display of notices during development.
 * It is strongly recommended that plugin and theme developers use WP_DEBUG
 * in their development environments.
 *
 * For information on other constants that can be used for debugging,
 * visit the documentation.
 *
 * @link https://wordpress.org/documentation/article/debugging-in-wordpress/
 */
define( 'WP_DEBUG', false );

您可以在这里配置下面各节中概述的任何调试常量。

WP_DEBUG

WP_DEBUG 常量是默认 WordPress 安装的 wp-config.php 文件中定义的唯一一个。在标准安装中,它设置为 false,但如果您运行的是 WordPress 的开发副本,则将其设置为 true。

WP_DEBUG PHP 常量用于触发 WordPress 安装的内置“调试”模式。这允许您查看主题中的错误。它应与下一节中列出的所有其他调试常量一起使用。

您应该在 wp-config.php 文件中看到此行:

define( 'WP_DEBUG', false );

要启用调试,请确保将其设置为 true,如下所示:

define( 'WP_DEBUG', true );

WP_DISABLE_FATAL_ERROR_HANDLER

WordPress 5.2 引入了致命错误处理程序,以确保当主题或插件导致致命错误时,用户不会被锁定在站点之外。这是一个在生产/现场站点中非常棒的功能。但在开发环境中可能会出现问题,阻止您完全诊断错误。

出于这个原因,在开发环境中,您应该禁用它以确保问题直到修复之前一直存在。在您的 wp-config.php 文件中定义此常量:

define( 'WP_DISABLE_FATAL_ERROR_HANDLER', true );

WP_DEBUG_DISPLAY

WP_DEBUG_DISPLAY 用于控制调试消息是否在您的 WordPress 站点的 HTML 中显示。默认情况下,当启用 WP_DEBUG 时,调试消息将显示在屏幕上。因此,您可以在开发期间安全地不定义 WP_DEBUG_DISPLAY。

如果您想禁用屏幕上的调试消息,可以在您的 wp-config.php 文件中将 WP_DEBUG_DISPLAY 设置为 false:

define( 'WP_DEBUG_DISPLAY', false );

WP_DEBUG_LOG

WP_DEBUG_LOG 常量是一个可选功能,您可以将其设置为将错误记录到您的站点 /wp-content 目录中的 debug.log 文件。默认情况下,此功能已禁用。

通常,如果您通过 WP_DEBUG_DISPLAY 关闭屏幕上的调试消息,那么您可能希望将这些消息存储在调试日志中。

要启用日志记录,请在您的 wp-config.php 文件中将 WP_DEBUG_LOG 常量定义为 true:

define( 'WP_DEBUG_LOG', true );

插件

有几个插件在调试您的主题时很有帮助。每个插件都托管在 WordPress 插件目录中:

  • Debug Bar: 为您的 WordPress 工具栏提供调试的中心位置。
  • Query Monitor: 启用数据库查询、PHP 错误、钩子和操作、块编辑器块、加载的脚本和样式表、HTTP API 调用等的调试。
  • Log Deprecated Notices: 记录主题中不正确和过时的函数及文件用法。