WordPress中已经给我们添加了调试模式,只是默认是关闭的,那么我在开发主题或者是插件的时候就需要打开这个Debug调试模式,优化我们的插件或者主题的时候也需要打开,以便检测出隐藏在前端页面背后的Bug。

调试模式

调试模式下WordPress会显示那些函数使用有问题,还可以显示执行了多条SQL查询等,对于优化WordPress有很大的帮助,例如下面的提示

Notice: 自 2.0 版本起,已不建议给 has_cap 传入一个参数!插件和主题中,用户等级的使用已不被支持。请换用角色和权限。 in ……/wp-includes/functions.php on line 2998

可以看到,只是“不建议”,并不是完全不能用了,但是我们还是应该限制使用,接收这个建议。

调试模式配置
WP_DEBUG

WordPress中的这个 WP_DEBUG常量相信大部分开发者都了解,在wp-config.php 文件下通过对定义这个常量即可开启debug 模式。


//开启 on wp_debug
define('WP_DEBUG', true);

//关闭 wp_debug
define('WP_DEBUG', false);

WP_DEBUG_LOG

通过定义这个常量,WordPress 中会输出debug 的错误信息在wp-content 文件夹下以debug.log 保存,这样你就就可以方便快捷地查看所有的错误并进行修改。


define('WP_DEBUG_LOG', true);

WP_DEBUG_DISPLAY

默认的话,在debug 模式下,WordPress 会将大部分的错误显示在前端屏幕上(亦有部分可以通过浏览器的查看源代码发现)。如果你不想显示,可以通过下面的变量关闭之:


define('WP_DEBUG_DISPLAY', false);

SCRIPT_DEBUG

默认的话,WordPress对于核心的脚本文件或样式文件会进行压缩化的处理,但在实际开发中,你可能因为要寻找脚本冲突问题而希望可以是不要压缩,那么通过定义这个变量就可。


define('SCRIPT_DEBUG', true);

SAVEQUERIES

如果要debug 数据库查询,那么你可以使用SAVEQUERIES 这个变量,它会保存每一个数据条的查询因此可能会导致你的开发环境中拖慢网站速度,因此请确保在的确需要的时候才开启它:


define('SAVEQUERIES', true);

开启SAVEQUERIES会使WordPress将当前页面执行的SQL查询保存到一个数组中,数组保存了每条查询的语句、调用该查询的函数以及执行时间。只要打印这个数组就能了解当前页面所有的SQL查询了,要获取这些查询可以通过$wpdb 变量输出之:


<?php
if (current_user_can('administrator')){
    global $wpdb;
    echo "<pre class="line-numbers language-php"><code class="language-php">";
    print_r($wpdb->queries);
    echo "

";
}
?>

上面的代码为了安全性,只有登录用户并且是管理员才会显示出来。