我正在研究WP代码,对/wp-includes/template-loader.php 文件,该文件处理必须为特定URL请求加载的模板。
if($template = apply_filters(\'template_include\', $template)){
include($template);
}elseif(current_user_can(\'switch_themes\')){
$theme = wp_get_theme();
if($theme->errors()){
wp_die($theme->errors());
}
}
第一部分非常清楚。已将某个模板设置为加载,WP可以在继续之前对其进行筛选。
但我不明白它的第二部分。
从wp_get_theme() 文档$theme
将包含一个主题对象。但是没有什么被包括在内,所以实际上什么都没有发生。
这样做的目的是什么?
最合适的回答,由SO网友:Howdy_McGee 整理而成
条件优先检查从template_include
hook. 在大多数情况下,会找到模板,不会出现问题。只有在以下条件下,我们才会进入第二个条件template_include
找不到或无法加载模板。然后我们看看WP_Theme object, 它会做一些基线检查,看看主题是否有问题。您可以查看链接的WP\\u主题对象以查看可以生成哪些错误,但通常只是确保主题是可访问和可读的。如果主题出现严重错误,它会向对象添加一个通知,并将其显示给用户以修复错误。
请注意,此错误只会显示给具有切换主题功能的登录用户(默认情况下为administrators)。想必,他们会知道如何修复错误,或将问题升级到需要的人。
如果主题没有任何问题,则假定它是故意遗漏的,或者是用户错误(即文件名错误或拼写错误)。在文件目录中检查类似名称的模板是不合理的。如果故意遗漏了缺失的模板,那么在该模板上出错是不合理的。